КОД
class A {
public:
A() {
// ...
};
// имеет виртуальные функции
}
class B : public A {
public:
B() : A() {
// ...
}
// определяет все виртуальные функции класса А
}
public:
A() {
// ...
};
// имеет виртуальные функции
}
class B : public A {
public:
B() : A() {
// ...
}
// определяет все виртуальные функции класса А
}
но после успешной компиляции при linkage получаю:
filename.o:filename.cpp:(.text+0x8) undefined reference to `vtable for A`
Обычно это происходит, если какой-то виртуальный метод класса объявлен, но нигде не определён. g++ обычно помещает vtable только в тот объектный файл, где определяется первый виртуальный метод класса, не объявленный как inline
Либо определяем здесь же реализацию виртуальных функций, либо делаем их "чистыми", помечая спецификатором "чистоты" - "=0"
Материал отсюда
Комментариев нет:
Добавлять новые комментарии запрещено.