【问题标题】:"undefined reference" to Virtual Base class destructor [duplicate]对虚拟基类析构函数的“未定义引用”[重复]
【发布时间】:2012-11-06 20:14:48
【问题描述】:

可能重复:
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()' 的引用”。这是什么意思,我该如何解决?

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

非常感谢您的帮助, 夜光

【问题讨论】:

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


    【解决方案1】:

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

    virtual ~Force() {}
    

    定义它什么都不做。

    您还希望将抽象接口中的所有功能纯虚拟,否则它们也需要定义:

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

    【讨论】:

    • 非常感谢——少一个问题...
    猜你喜欢
    • 1970-01-01
    • 2017-01-27
    • 2015-10-12
    • 1970-01-01
    • 2020-07-07
    • 2016-09-26
    • 2015-08-22
    • 1970-01-01
    相关资源
    最近更新 更多