我正在尝试使用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
答案 0 :(得分:2)
未定义引用`vtable for b(函数b:...)
这意味着您可能尚未实现所有b
的虚拟方法。当第一个定义为AFAIK时,gcc会发出vtable。
这意味着它与构造函数的实现无关。