Lets sagen, dass ich diesen Code haben:Karte von Vektoren einer abgeleiteten Klasse unter Verwendung der Funktion der seiner Klasse zu nennen
class Parent{
public:
virtual void printm(){
cout << "Parent" << endl;
}
class Child:public Parent{
public:
void printm(){
cout << "Child" << endl;
}
int main()
{
Parent * aPerson = new Child;
map<string, vector<Parent*>> family;
family["Test"].pushback(aPerson);
//I want to be able to do SOMETHING like this but I'm wondering if that's
//possible? I know it looks crazy but please bear with me
printdata(family["Test"]);
}
void printdata(Parent * x){
x->printm();
}
ich überall gesucht haben und nicht in der Lage, jemanden zu finden, der eine ähnlich Problem für mich. Ich habe das Gefühl, dass es möglich ist. Ich weiß, es ist viel einfacher zu tun:
printdata(aPerson);
Aber ... wieder ... Ich möchte nur alle Möglichkeiten kennen.
'family [" Test "]' ist kein Elternteil * oder ein Kind * - es ist ein Vektor von Eltern * s. Es könnte mehrere Zeiger enthalten oder keine - in welchem Fall, was möchten Sie tun? – immibis
Ich bin wirklich langsam .. Wenn Sie fragen, was ich wirklich tun möchte: Ich möchte einfach die Funktion Printm() mit der Map-Taste aufrufen. Aber wie die Dinge jetzt aussehen, muss ich vielleicht einige Funktionsparameter ändern? – Xirol
Sie verstehen nicht: die Karte enthält keine Zeiger auf Elternklassen. Die Karte enthält einen Vektor von Zeigern zu übergeordneten Klassen. So haben Sie die Karte deklariert. Sie müssen entscheiden, was zu tun ist, wenn: 1) der Vektor leer ist, 2) der Vektor einen Zeiger enthält und 3) der Vektor mehr als einen Zeiger enthält. –