错误:没有已知的从“foo1*”到“const foo2&”的转换

error: no known conversion from 'foo1*' to 'const foo2&'

提问人:Jess 提问时间:1/15/2017 更新时间:1/15/2017 访问量:150

问:

我可以知道如何对参数执行操作,以便我可以调用复制构造函数吗?amain()

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);
}

如果有人能帮忙,谢谢

C++ 多态常 copy-constructor

评论

0赞 Jess 1/15/2017
我试过了,但我遇到了另一个错误:没有已知的从“foo1”到“const foo2&”的转换
0赞 UnholySheep 1/15/2017
Downcasts 需要明确 - 尝试,这是文档*dynamic_cast<foo2*>(a)
0赞 Jess 1/15/2017
@UnholySheep它不起作用,错误:foo2::foo2(foo2 const&)' 。我的代码是这样的,如果我输入错误,请纠正我undefined reference to foo1* b = new foo2(*dynamic_cast<foo2*>(a));
0赞 UnholySheep 1/15/2017
不,这是正确的 - 它编译了,但你得到一个链接器错误,因为你实际上没有定义一个复制构造函数 - 你只声明了它。为了链接,您还需要为它编写一个定义
0赞 Jess 1/15/2017
@UnholySheep我明白了,谢谢你的帮助!!

答:

0赞 yahoo5000 1/15/2017 #1

您的复制构造函数需要引用(地址),并且您尝试传递指针。因此,您希望创建实际对象,而不是指针或服从指针