“undefined reference”指向虚基类析构函数

36
可能重复:
什么是未定义的引用/未解决的外部符号错误,我该如何解决? 我有Java的一些经验,现在正在学习C++课程。我想尝试编写接口,但我遇到了一些问题,这些问题涉及析构函数,即使在互联网上寻求帮助也未能解决...以下是我的代码:
    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;

};

我尝试为基类声明虚析构函数,为派生类声明非虚析构函数,但是出现了错误,提示“undefined reference to `Force::~Force()'”。这是什么意思,我该如何修复它?
如果我的问题很幼稚,请原谅!
非常感谢您的帮助, noctilux
1个回答

51
您已经声明了析构函数,但未定义它。请将声明更改为:
virtual ~Force() {}

定义为空操作。

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

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

非常感谢,这样就少了一个问题... - noctilux
一个所谓的C++接口是一个类,其中所有方法都是纯虚拟的,除了析构函数。 - KcFnMi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接