“undefined reference” to Virtual Base class destructor
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is an undefined reference/unresolved external symbol error and how do I fix it?
我有一些Java的经验,现在正在做一个C++课程。我想尝试写一个接口,但我遇到了一些我无法解决的析构函数的问题,即使在互联网上的帮助下…以下是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | class Force { public: virtual ~Force(); virtual VECTOR eval(VECTOR x, double t); }; class InvSquare : public Force { public: InvSquare(double A) { c = A; } ~InvSquare(){}; VECTOR eval(VECTOR x, double t) { // omitted stuff } private: double c; }; |
我试图为基类声明一个虚拟析构函数,为派生类声明一个非虚拟析构函数,但是我得到一个错误,说"未定义的引用到‘force::~force()’"。这是什么意思?我该怎么修复它?
如果这是一个愚蠢的问题,请原谅我!
非常感谢你的帮助,夜蛾属
您已经声明了析构函数,但没有定义它。将声明更改为:
1 | virtual ~Force() {} |
定义它什么都不做。
您还希望使抽象接口中的所有函数都是纯虚拟的,否则还需要定义它们:
1 | virtual VECTOR eval(VECTOR x, double t) = 0; |