2017-01-14 3 views
-3

Darf ich wissen, was mit dem Parameter a in main() zu tun, so dass ich den Copy Constructor aufrufen kann?Fehler: keine bekannte Konvertierung von 'foo1 *' nach 'const foo2 &'

class foo1 { 
public: 
    virtual void display() = 0; 
}; 

class foo2 : public foo1 
{ 
public: 
    foo2(); 
    foo2(const foo2& a); 
    void display() 
    { 
     cout << "Copy constructor works\n"; 
    } 
}; 

int main() 
{ 
    foo1* a = new foo2; 
    foo1* b = new foo2(a); 
} 

Dank, wenn jemand

+0

Ich habe versucht, aber ich sah einen anderen Fehler: keine bekannte Umwandlung von 'foo1' zu 'const foo2 &' – Jess

+0

Downcasts müssen explizit sein - versuchen ' * dynamic_cast (a) ', hier ist die [Dokumentation] (http://en.cppreference.com/w/cpp/language/dynamic_cast) – UnholySheep

+0

@ UnholySheep es funktioniert nicht, Fehler:' undefinierter Verweis auf 'foo2: : foo2 (foo2 const &) '. Mein Code ist wie folgt 'foo1 * b = new foo2 (* dynamic_cast (a));', korrigieren Sie mich, wenn ich falsch eingegeben – Jess

Antwort

0

Ihr Copykonstruktor helfen könnte, muss Referenz (Adresse) und Sie einen Zeiger passieren versucht. Also Äther Sie wollen eigentlich Objekt erstellen und nicht ein Zeiger oder Reference-Zeiger

Verwandte Themen