35

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

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

};

我试图为基类声明一个虚拟析构函数,为派生类声明一个非虚拟析构函数,但我收到一条错误消息,提示“未定义对‘Force::~Force()’的引用”。这是什么意思,我该如何解决?

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

非常感谢你的帮助,夜光

4

1 回答 1

49

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

virtual ~Force() {}

定义它什么都不做。

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

virtual VECTOR eval(VECTOR x, double t) = 0;
于 2012-11-18T21:33:44.567 回答