39

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

0

1 Answer 1

53

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; 
Sign up to request clarification or add additional context in comments.

2 Comments

Thank you very much -- that's one problem less...
A, so called, C++ interface is a class in which all methods are pure virtual, all but the destructor?

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.