【发布时间】:2011-10-02 00:00:19
【问题描述】:
我正在尝试在代码块下编译具有以下结构的代码:
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 中:...)
我尝试使用参考来提取相同的东西,结果相同。我尝试将 a::b_inst 更改为指针并在构造函数(代码部分)中使用 new 创建 b 的实例,结果相同。 这样做的正确方法是什么?
顺便说一句,如果我不添加构造时传递的指针,代码可以工作,所以我认为答案here没有解决它
【问题讨论】:
-
您的实际代码中的声明顺序是否正确?正如所写,这甚至不会编译。
标签: c++ linker-errors