2017-01-14 20 views
-3

我可以知道如何处理参数a in main()以便我可以调用复制构造函数吗?错误:没有已知的从'foo1 *'到'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); 
} 

感谢,如果有人可以帮助

+0

我试过了,但我面临另一个错误:没有已知的从'foo1'到'const foo2'转换' – Jess

+0

downcasts需要明确 - * dynamic_cast (a)',这里是[文档](http://en.cppreference.com/w/cpp/language/dynamic_cast) – UnholySheep

+0

@UnholySheep它不起作用,错误:'未定义引用'foo2: :foo2(foo2 const&)'。我的代码是这样的'foo1 * b = new foo2(* dynamic_cast (a));',纠正我,如果我输入错误 – Jess

回答

0

你的拷贝构造函数需要引用(地址),你想传递一个指针。所以乙醚你想创建实际的对象,而不是一个指针或尊敬的指针

相关问题