Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja mówiąca, z jakiej klasy pochodzi obiekt

Ostatnio zmodyfikowano 2014-05-10 15:03
Autor Wiadomość
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:
C/C++
class A
{
public:
    //cos...
    virtual void funkcja( A obiekt )
    {
        cout << "obiekt klasy A" << endl;
    }
};

class B
    : public A
{
public:
    //cos
    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:
C/C++
A samochod;
B::funkcja( samochod );
to wyświetli nam, że jest z klasy B a nie z A.

Jak to inaczej zrobić?
P-109581
Monika90
» 2014-05-09 19:07:03
Taka funkcja nie potrzebuje parametrów
w klasie A
C/C++
virtual void funkcja() const
{
    cout << "obiekt klasy A" << endl;
}
w klasie B
C/C++
void funkcja() const override
{
    cout << "obiekt klasy B" << endl;
}

używasz w ten sposób
C/C++
A a;
B b;
a.funkcja();
b.funkcja();
P-109582
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:
C/C++
virtual void funkcja() const
{
    cout << "obiekt klasy B" << endl;
}
P-109584
maly
» 2014-05-09 19:27:57
P-109585
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.
P-109586
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?
P-109590
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 :(.
P-109591
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.
P-109593
« 1 » 2
  Strona 1 z 2 Następna strona