C ++未定义的引用

时间:2010-03-22 17:18:43

标签: c++

我的问题如下: 我有一个继承自抽象基类的A类。我覆盖了基类中的所有虚函数,我有一个像这样的构造函数:

A::A(B* b)
{
this->b=b;
}

在B类的构造函数中,我有以下代码:

A* a=new A(this)

然而,这行代码给出了错误:对'A :: A(B *)'

的未定义引用

我绝对不知道为什么会发生这种情况,所以任何建议都将不胜感激!

2 个答案:

答案 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