我的问题如下: 我有一个继承自抽象基类的A类。我覆盖了基类中的所有虚函数,我有一个像这样的构造函数:
A::A(B* b)
{
this->b=b;
}
在B类的构造函数中,我有以下代码:
A* a=new A(this)
然而,这行代码给出了错误:对'A :: A(B *)'
的未定义引用我绝对不知道为什么会发生这种情况,所以任何建议都将不胜感激!
答案 0 :(得分:3)
这是链接器错误。您应该链接到定义A::A(A*)
的库。
答案 1 :(得分:0)
你必须在B的定义之前加入A的定义。你还必须做出B的前向声明以在A中使用它并防止循环定义。
class B;
class A
{
public :
A(B* b);
};
A* a=new A(this) // should work at this point