Rzutowanie na wskaźnik?

0

Czy mógłby ktoś w prosty sposób wyjaśnić fragment kodu:

Producent *wsk = (Producent *)obj 

?
Producent to jedna z klas. W jakim celu robi się takie rzutowanie i jak je rozumieć? Z góry dziękuję.

3

Na przykład po to, żeby móc wywołać metodę klasy Producent, bo obj został zadeklarowany jako wskaźnik do klasy bazowej, po której dziedziczy Producent.

struct Base {};
struct Producent : public Base
{
    void foo() { cout << "foo"; }
};

int main()
{
    Base* obj = new Producent();
    Producent* wsk = (Producent*) obj;
    wsk->foo();
    ....  // pamietaj o poprawnym sprzataniu wskaznikow :D
}

Przy czym takie rzutowanie najczęściej (ale nie zawsze) oznacza kiepski projekt klas i ogólnie całego programu.

No i w C++ do rzutowania korzysta się z static_cast i spółki, które łatwiej wychwytują błędy niż takie nawiasy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1