C++ 错误:没有从';foo1*';至';康斯坦福2&';

C++ 错误:没有从';foo1*';至';康斯坦福2&';,c++,polymorphism,constants,copy-constructor,C++,Polymorphism,Constants,Copy Constructor,我可以知道如何处理main()中的参数a,以便调用复制构造函数吗 class foo1 { public: virtual void display() = 0; }; class foo2 : public foo1 { public: foo2(); foo2(const foo2& a); void display() { cout << "Copy constructor works\n"; } };

我可以知道如何处理
main()
中的参数
a
,以便调用复制构造函数吗

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);
}
1类{
公众:
虚空显示()=0;
};
foo2类:公共foo1
{
公众:
foo2();
foo2(const foo2&a);
无效显示()
{

cout您的复制构造函数需要引用(地址),您试图传递一个指针。因此,您希望创建实际对象,而不是指针或遵从指针。我已经尝试过,但我遇到了另一个错误:没有已知的从“foo1”到“const foo2&”的转换需要显式-try
*dynamic\u cast(a)
,这是@UnholySheep,它不起作用,错误:
未定义对
foo2::foo2(foo2 const&)``的引用。我的代码是这样的
foo1*b=new foo2(*dynamic_cast(a));
,如果我输入错误,请更正我否,这是正确的-它会编译,但您会得到一个链接器错误,因为您实际上没有定义副本构造函数-您只声明了它。您需要实际为它编写一个定义,以便作为well@UnholySheep我知道了,谢谢你的帮助!!