将它从构造函数传递给其他构造函数会在链接上产生未定义的引用

时间:2011-10-02 00:00:20

标签: c++ linker-errors

我正在尝试使用codeblocks下的以下结构编译代码:

class a : public cppcms::application (has virtual members) {
 public:
   a() : b_inst(this) {}
   ...
   b b_inst;

}

class b {
  public:
    b(a* ptr) : a_ptr(ptr) {}
  private:
    a* a_ptr;
  ...
}

我正在尝试将其与codeblocks / g ++结合使用并获取以下错误消息(在链接阶段):

  

未定义引用`vtable for b(函数b:...)

我尝试用相同的结果拉出相同的东西。我试图将:: b_inst更改为指针并在构造函数(codepart)中使用new创建b的实例,结果相同。 这样做的正确方法是什么?

顺便说一句,如果我没有添加指针传递构造,代码可以工作,所以我认为答案不能解决here

1 个答案:

答案 0 :(得分:2)

  

未定义引用`vtable for b(函数b:...)

这意味着您可能尚未实现所有b的虚拟方法。当第一个定义为AFAIK时,gcc会发出vtable。

这意味着它与构造函数的实现无关。