Monday, August 20, 2018

c++ - "undefined reference" to Virtual Base class destructor





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






I have some experience with Java, and am now doing a C++ course. I wanted to try writing an interface, but I have run into some trouble with destructors which I have not been able to resolve, even with the help on the Internet... Here's my code:




    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;

};


I have tried to declare a virtual destructor for the base class, and a non-virtual one for the derived class, but I get an error saying "undefined reference to `Force::~Force()'". What does it mean, and how can I fix it?




Forgive me if this is a silly question!



Thank you very much for your help,
noctilux


Answer



You've declared the destructor, but not defined it. Change the declaration to:



virtual ~Force() {}



to define it to do nothing.



You also want to make all the functions in the abstract interface pure virtual, otherwise they will need to be defined too:



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

No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...