关于c ++:Virtual Base类析构函数的“未定义引用”

“undefined reference” to Virtual Base class destructor

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is an undefined reference/unresolved external symbol error and how do I fix it?

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    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()’"。这是什么意思?我该怎么修复它?

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

非常感谢你的帮助,夜蛾属


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

1
virtual ~Force() {}

定义它什么都不做。

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

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