【发布时间】:2020-09-21 03:51:03
【问题描述】:
我对 c++ 比较陌生,并且有如下实现:
class A {
virtual void func1() = 0;
};
class B : A {
void func1() override{
// imlement func1 here
}
virtual func2() = 0;
}
class C : B {
void func2() override{
// implement func2 here;
}
}
这些类被打包为自己的二进制文件,可以单独构建。
B 构建成功,但是当我构建 C 时,它给出了“未定义对 vtable 的引用”错误。 为了摆脱它,我必须在 C 中实现 func1()。
但是对于 func1(),我希望在 B 中实现(因为在我的项目中,B 是现有的遗留类)而不是在 C 中。有没有办法做到这一点?
谢谢
【问题讨论】:
-
packaged as their own binaries这需要更多细节。如果您的意思是某种共享/动态库,那么您必须以某种方式“导出”这些类,而这样做的方法是特定于平台和编译器的。 -
这能回答你的问题吗? Undefined reference to vtable
标签: c++ inheritance vtable multi-level