Funkcja mówiąca, z jakiej klasy pochodzi obiekt
Ostatnio zmodyfikowano 2014-05-10 15:03
kamil010 Temat założony przez niniejszego użytkownika |
Funkcja mówiąca, z jakiej klasy pochodzi obiekt » 2014-05-09 19:01:47 Witam. Mam klasę bazową A, dziedziczy po niej B i C, natomiast po B dziedziczy D. Chcę zrobić funkcję, która wyświetli informację o typie obiektu np. "jestem obiektem klasy A". Ma to być funkcja wirtualna w klasie bazowej i pochodnych. Jak to zrobić? Próbowałem tak: class A { public: virtual void funkcja( A obiekt ) { cout << "obiekt klasy A" << endl; } };
class B : public A { public: virtual void funkcja( B obiekt ) { cout << "obiekt klasy B" << endl; } }; Jednak w tym przypadku po pierwsze w klasach pochodnych musiałem zmienić virtual na static. A po drugie gdy zrobimy np. tak: A samochod; B::funkcja( samochod ); to wyświetli nam, że jest z klasy B a nie z A. Jak to inaczej zrobić? |
|
Monika90 |
» 2014-05-09 19:07:03 Taka funkcja nie potrzebuje parametrów w klasie A virtual void funkcja() const { cout << "obiekt klasy A" << endl; }
w klasie B void funkcja() const override { cout << "obiekt klasy B" << endl; }
używasz w ten sposób A a; B b; a.funkcja(); b.funkcja();
|
|
kamil010 Temat założony przez niniejszego użytkownika |
» 2014-05-09 19:17:41 Działa. A możesz mi powiedzieć co daje to słowo "override". Gdy usunę to słowo i dodam virtual (bo miała być funkcja wirtualna) to też działa, mam tak: w klasie B: virtual void funkcja() const { cout << "obiekt klasy B" << endl; }
|
|
maly |
» 2014-05-09 19:27:57 |
|
Monika90 |
» 2014-05-09 19:33:54 Uwaga! Słowo kluczowe override jest rozszerzeniem kompilatora Microsoft Visual C++ i nie należy ono do standardu C++. |
To można usunąć, bo teraz już należy do standardu. |
|
kamil010 Temat założony przez niniejszego użytkownika |
» 2014-05-09 19:52:29 Ok, rozumiem. To ostatnie pytanie, jak zrobić tablicę wskaźników klasy bazowej, z których część wskazywać będzie na obiekty klas pochodnych? |
|
Jacob99 |
» 2014-05-09 19:57:23 Nie ma chyba takiego sposobu, żeby stworzyć tablicę której część pokazywałaby od razu na klasy pochodne. Musisz stworzyć tablicę wskaźników i część z nich ustawić na klasę pochodną. Innego wyjścia chyba nie ma :(. |
|
pekfos |
» 2014-05-09 20:19:58 To ostatnie pytanie, jak zrobić tablicę wskaźników klasy bazowej, z których część wskazywać będzie na obiekty klas pochodnych? |
Normalnie..? W czym problem? Zrób dokładnie tak, jak napisałeś w pytaniu. |
|
« 1 » 2 |