Ich habe übergeordnete Klasseaccesing Methode einer anderen Klasse von Vektor
class Data
{
};
Klassen, die von Klasse Daten erben:
class Struct : public Data
{
public:
Struct & AddNewType (const string & name, Data * x)
{
v . push_back (x);
return *this;
}
void Print (void) const
{
for (unsigned int i = 0; i < v . size(); i++)
cout << v[i]->GetSize();
}
private:
vector<Data*> v;
};
class Integer : public Data
{
public:
int GetSize (void) const
{
return 4;
}
};
Hauptfunktion:
int main (void)
{
Struct a;
a . AddNewType ("Integer", new Integer);
a . Print();
return 0;
}
Wenn ich a.Print()
es nenne gibt mir diesen Fehler:
practice.cpp: In member function ‘void Struct::Print() const’:
practice.cpp:40:21: error: ‘class Data’ has no member named ‘GetSize’
cout << v[i]->GetSize();
Kann mir bitte jemand sagen, wie ich das beheben kann? Der Hauptzweck besteht darin, verschiedene Pseudodatentypen im Vektor zu speichern. Aber wenn ich Vektor mit diesen Datentypen loopen will und Funktion GetSize von ihm rufe, gibt es mir Fehler, den ich oben bekanntgab.
Es sieht aus wie Sie eine [Lektion] müssen (http://www.tutorialspoint.com/cplusplus/cpp_polymorphism.htm) auf Polymorphismus. – NathanOliver
@NathanOliver Ja, ich mache – kvway
Bitte verwenden Sie keine vorangestellten oder nachfolgenden Leerzeichen mit '.' oder' -> '. – Nacho