Problem z dziedziczeniem
Ostatnio zmodyfikowano 2011-07-29 20:20
Thud |
» 2011-07-28 23:41:25 Zależy jak to zaimplementujesz. Możesz dziedziczyć np. z jednej klasy rodzica dwie klasy potomka. |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-28 23:47:10 Chciałbym żeby wszystko było jasne napiszę o co mi chodzi a ty jeżeli możesz podasz mi najlepszy sposób: Mam dwie klasy: class Enemy { public: sf::Shape Obiekt; };
class Akcje { public: void action(); };
i na końcu chciałbym aby to wyświetło się w następujący sposób Enemy Alien; Alien.action(); Da rade? |
|
kamillo121 |
» 2011-07-28 23:54:07 Wynajdujesz problemy na siłę :) Jak widać tak po prostu się nie da bo obydwie klasy nie mają ze sobą żadnego powiązania w takiej postaci. Możesz to zrobić w inny sposób, jaki ? Np. class Action { public: void action(); };
class Foo { public: Action act; };
I odwoływać się: Możesz też skorzystać z uroków wskaźników na metody ale do tego trzeba nieco większej wiedzy. A teraz doczytałem(coś mi przedtem umknęło), że action ma mieć dostęp do Enemy, to nic innego jak dziedziczenie(najbardziej czytelny sposób). Klasa Enemy może dziedziczyć Action i wydaje się to logiczne. |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-29 00:01:21 OK klasa Enemy dziedziczy Action ale również funkcja(); w jakiś sposób musiałą by mieć dostęp do Obiekt, jak to zrobić wcześniej wywalało mi błąd jak wpisałęm Wrog_A &wrog |
|
kamillo121 |
» 2011-07-29 00:11:40 Albo lepiej daj sobie spokój z dziedziczeniem, jest późno, mogą komuś nerwy puścić :) Jak chcesz to szybko zrobić to zrób to tak: class Enemy;
class Action { Enemy * en; public: Action( Enemy * en ) { Action::en = en; } void action() { } };
class Enemy { public: Action * act; Enemy() { act = new Action( this ); } };
A użycie to: :) |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-29 00:15:30 Ok dzięki zaraz to przeanalizuje ja tak czy siak dzisiaj nie zasnę dopuki nie rozgryzę tego o co wczesniej pytałem także jeżeli mają ci nerwy puścić to najwyżej jutro odpiszesz :)
Enemy Alien
Alien.action();
//Powyższą operację mogę zrobić dzięki dziedziczeniu
action() //Definicja action {
//Ale tutaj w definicji potrzebuje obiektu Obiekt z klasy Enemy o to mi chodzi jak miec do niego dostęp?
}
|
|
kamillo121 |
» 2011-07-29 00:19:14 Jeżeli by ci to nie przeszkadzało to możesz po prostu dodać "wcześniej" klasę abstrakcyjną typu "data" która przechowywałaby wszystkie potrzebne dane: struct Data { };
class Action : Data { };
class Enemy : Action { };
Tak jak to wyżej opisałeś to nie jest to możliwe bo jak klasa główna może korzystać z czegoś o czym nie ma pojęcia że to istnieje ? :) |
|
Thud |
» 2011-07-29 00:19:17 Prosty i mało ograniczony zasięg będziesz miał przez przyjaźń klas. |
|
1 « 2 » 3 4 5 6 7 |