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

noc*_*lux 27 c++ abstract-class undefined-reference

可能重复:
什么是未定义的引用/未解析的外部符号错误,如何解决?

我有一些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;

};
Run Code Online (Sandbox Code Playgroud)

我试图为基类声明一个虚拟析构函数,并为派生类声明一个非虚函数,但是我得到一个错误,说"未定义引用`Force :: ~Force()'".它是什么意思,我该如何解决?

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

非常感谢你的帮助,noctilux

Mik*_*our 39

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

virtual ~Force() {}
Run Code Online (Sandbox Code Playgroud)

定义它什么也不做.

您还希望将抽象接口中的所有函数都设置为纯虚拟,否则也需要定义它们:

virtual VECTOR eval(VECTOR x, double t) = 0;
Run Code Online (Sandbox Code Playgroud)