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我知道了,谢谢你的帮助!!