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

Tablica obiektów klas bazowych

Ostatnio zmodyfikowano 2016-10-24 11:20
Autor Wiadomość
heptan
Temat założony przez niniejszego użytkownika
Tablica obiektów klas bazowych
» 2016-10-24 10:51:54
witam
to w skrócie: mam abstrakcyjną klasę bazową A i dziedziczące po niej klasy B C itp.. Mam też klasę ClassPanel w której tworzę vector na bazie klasy Aclass do zapisywania obiektów klas B C itp .
[c++]class Panelclass
{
private:
    vector <unique_ptr<Aclass>> classList;

public:
   void addObject(int classNum,string name)
    {
        switch(classNum)
        {
        case 1:{classList.emplace_back(new Eclass(name));break;}
        case 2:{classList.emplace_back(new Fclass(name));break;}
        case 3:{classList.emplace_back(new Gclass(name));break;}
        case 4:{classList.emplace_back(new Jclass(name));break;}
        case 5:{classList.emplace_back(new Kclass(name));break;}
        case 6:{classList.emplace_back(new Iclass(name));break;}
        }

    }[/c++]

w momencie kompilacji wyskakuje mi error Aclass is anbiguos base of Fclass" co jest źle w tym kodzie ?
pozdrawiam
P-152853
michal11
» 2016-10-24 11:00:30
Pokaż co to jest Fclass.
P-152854
karambaHZP
» 2016-10-24 11:14:37
Wygląda to tak: Klasa F dziedziczy po dwóch klasach, które dziedziczą po klasie A.
Jeśli tak jest problem możesz rozwiązać przez dziedziczenie wirtualne.
C/C++
class A { };

class B
    : public A
{ };
class C
    : public A
{ };

class D
    : virtual public B
     , virtual public C
{ };

Takie dziedziczenie oznacza zwykle błąd projektowy.
P-152857
carlosmay
» 2016-10-24 11:20:42
virtual
 nie w tym miejscu.
C/C++
class A { };

class B
    : virtual public A
{ };
class C
    : virtual public A
{ };

class D
    : public B
     , public C
{ };
P-152858
« 1 »
  Strona 1 z 1