witam,
Napisałem klasy o podanej hierarchii dziedziczenia: A->B->E
klasy A i B nie mogą tworzyć obiektów. Dopóki Klasa E tworzyła sama pola name i className wszystko działało natomiast zmieniłęm że Klasa E dziedziczy name po A oraz className po B i program się wysypuje. Obiekty klasy liścia zapisuje w wektorze (<vector>). Obiekt jest dodawany normalnie natomiast jeśli próbuje zwrócić nazwę tego obiektu program się wysypuje. Dodam jeszcze, że klasa B dziedziczy wirtualnie po a ponieważ potem mam wielokrotne dziedziczenie po innych klasach.
class Aclass
{
protected:
string className;
public:
virtual string getClassname();
virtual string getName();
virtual string getStringToSave();
virtual void setClassName(string AclassName);
virtual void setInfo(string aInfo);
virtual string getString();
};
class Bclass
: public virtual Aclass
{
protected:
string name;
string info;
public:
virtual string getClassname();
virtual string getName();
virtual string getStringToSave();
virtual void setClassName(string AclassName);
virtual void setInfo(string aInfo);
virtual string getString();
};
class Eclass
: public Bclass
{
public:
string getName();
string getClassname();
Eclass(string name);
string getStringToSave();
void setClassName(string AclassName);
void setInfo(string aInfo);
string getString();
};
string Aclass::getString(){};
string Aclass::getStringToSave(){};
void Aclass::setClassName(string AclassName){};
void Aclass::setInfo(string aInfo){};
string Aclass::getName(){};
string Aclass::getClassname(){};
string Bclass::getString(){};
string Bclass::getStringToSave(){};
void Bclass::setClassName(string AclassName){};
void Bclass::setInfo(string aInfo){};
string Bclass::getName(){};
string Bclass::getClassname(){};
Eclass::Eclass(string name)
{
setClassName("Eclass");
this->name = name;
this->info = "brak informacji";
}
string Eclass:: getStringToSave()
{
return className + "\t" + name + "\t" + info+ "\t";
}
string Eclass:: getString()
{
return "nazwa klasy: " + className +" nazwa: " + name + " info: " + info;
}
void Eclass::setClassName(string AclassName)
{
className=AclassName;
}
void Eclass::setInfo(string aInfo)
{
this->info = aInfo;
}
string Eclass::getName()
{
return this->name;
}
string Eclass::getClassname()
{
return this->className;
}