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

passing this from constructor to other constructor yields undefined reference on linking

本文关键字:构造函数 链接 未定义 引用 其他      更新时间:2023-10-16

我试图在代码块下编译以下结构的代码:

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

我正试图把这个代码块/g++放在一起,并得到以下错误信息(在链接阶段):

未定义的vtable引用(In function b:…)

我试着拉同样的东西与参考,相同的结果。我试图将a::b_inst更改为指针,并在构造函数(codepare)中创建一个带有new的b实例,结果相同。正确的做法是什么?

顺便说一下,如果我不添加传递构造的指针,代码工作,所以我认为它不是由这里的答案解决

未定义的vtable引用(In function b:…)

这意味着您可能还没有实现b的所有虚方法。当第一个虚值表被定义时,gcc会发出虚值表。

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