C++ Obiektowość | Dziedziczenie
Ostatnio zmodyfikowano 2011-10-31 17:55
skovv Temat założony przez niniejszego użytkownika |
» 2011-10-30 15:08:34 Tak żeby nie otwierać nowego tematu to zapytam tu: Jak odwołać się do zmiennej obiektu dziedziczącemu klasy OBJECT?? Proszę spojrzeć na przykład: class OBJECT { public: bool blabla; OBJECT() { blabla = true; } int xxx() { return 1; } }; class GRACZ : public OBJECT { public: bool atak2; GRACZ() { atak2 = false; } }; class CZAR : public OBJECT { public: bool dziala; CZAR() { dziala = true; } void Update() { if( !Eng.Obj[ objCreator.int_id ]->atak2 ) { dziala = false; } } };
|
|
DejaVu |
» 2011-10-30 15:20:36 Obiekt * pObiekt = new Gracz; Gracz * xxx = dynamic_cast < Gracz *>( pObiekt ); if( xxx ) xxx->metodaGracza(); |
|
skovv Temat założony przez niniejszego użytkownika |
» 2011-10-30 15:24:28 kompletnie nie rozumiem co napisałeś :| Mógłbyś wpisać w to w szablon i opisać? Byłbym bardzo wdzięczny |
|
DejaVu |
» 2011-10-30 15:25:28 |
|
skovv Temat założony przez niniejszego użytkownika |
» 2011-10-30 15:41:43 Ehh... Tam jest nieco inna sytuacja bo: class B {...}; class C : public B {...}; class D : public C {...};
Może powiem jak to robie: na początku tworze obiekty( 4 ścianki i 1 gracza ) dodając je do listy obiektów( jak na początku tematu ). Gram sobie gram i nagle chcę zaatakować. Wciskam klawisz X i do listy obiektow dodaje CZAR na pozycji(x|y) i z numerem obiektu na liście obiektów(aby było wiadomo w którym obiekcie szukać zmiennej). Gracz wykonuje animacje i atakuje, jednak po pewnym czasie czar ma się wyłączyć, dlatego potrzebna mi jest zmienna atak2. Klasa główna OBJECT nie posiada bool atak2 i przez to przy kompilacji CZAR domaga się dodania. Gdy dodam zmienną do klasy OBJECT to wszystko działa prawidłowo(czar wie kiedy się wyłączyć) jednak w przeciwnym razie nie działa :/ |
|
DejaVu |
» 2011-10-30 15:47:48 Chcesz osiągnąć rozwiązanie nie próbując nawet zrozumieć co to jest dynamic_cast i jak działa... |
|
skovv Temat założony przez niniejszego użytkownika |
» 2011-10-30 16:05:17 Czy chodziło o coś takiego? class CZAR : public OBJECT { public: OBJECT_ID objCreator; OBJECT * pObiekt; GRACZ * atak2; CZAR( int x = 0, int y = 0, OBJECT_ID ObjWhoCreateMe ) { objCreator = ObjWhoCreateMe; pObiekt = Eng.Obj[ objCreator.int_id ]; atak2 = dynamic_cast < GRACZ *>( pObiekt ); } void Update() { atak2 = dynamic_cast < GRACZ *>( pObiekt ); if( atak2 ) { Eng.ObjectDelete( ObjID.vec_id ); dziala = false; } } };
To niestety nie działa :/ Czar pojawia się i odrazu znika. |
|
skovv Temat założony przez niniejszego użytkownika |
» 2011-10-30 17:00:25 Nie no... http://msdn.microsoft.com/en-us/library/cby9kycs%28v=vs.71%29.aspx tutaj nie ma nic o pobieraniu zmiennych, nawet nie ma żadnych w przykładach :/ |
|
1 « 2 » 3 4 |