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ę.
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ę.
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.