gpt4 book ai didi

c++ - 对父类中方法的 undefined reference

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:18 26 4
gpt4 key购买 nike

我的程序中有 3 个类(class),

class A {
public:
virtual ~A() {
decompose();
}
virtual void decompose();
};

class B:public A {
private:
int *b_data;
public:
void decompose() {
if (b_data != NULL) delete [] b_data;
}
};

class C:public A {
private:
int *c_data;

public:
void decompose() {
if (b_data != NULL) delete [] c_data;
}
};

但是当我用g++编译这段代码时,我得到了错误:

In function `~A':
undefined reference to `vtable for A'
undefined reference to `A::decompose()'

In function `A':
undefined reference to `vtable for A'
undefined reference to `typeinfo for A'
undefined reference to `typeinfo for A'

如果有帮助,类 A 定义在 .h 文件中,它的析构函数是内联定义的,另外两个类有两个文件 .h.cpp

在我的程序中,我根据以下方式调用这些类:

int main() {
A *a;
a = new B(); //constructor is defined
delete a;
return 0;
}

这段代码有问题吗?

最佳答案

在构造函数和析构函数中调用虚函数要小心。它们不会像往常一样被覆盖。 A(..)~A() 总是调用 A::decompose。我认为编译器在提示找不到这个函数。

关于c++ - 对父类中方法的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22750855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com