Virtual Base类析构函数的“未定义引用”

时间:2012-11-18 21:29:25

标签: c++ abstract-class undefined-reference

  

可能重复:
  What is an undefined reference/unresolved external symbol error and how do I fix it?

我有一些Java经验,现在正在做C ++课程。我想尝试编写一个接口,但是我遇到了一些我无法解决的析构函数问题,即使是在Internet上的帮助......这是我的代码:

    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()'”。它是什么意思,我该如何解决?

如果这是一个愚蠢的问题,请原谅我!

非常感谢你的帮助, NOCTILUX

1 个答案:

答案 0 :(得分:36)

你已经声明了析构函数,但没有定义它。将声明更改为:

virtual ~Force() {}

将其定义为什么都不做。

您还希望在抽象接口纯虚拟中创建所有函数,否则也需要定义它们:

virtual VECTOR eval(VECTOR x, double t) = 0;