I got this interface I've written:
#ifndef _I_LOG_H
#define _I_LOG_H
class ILog {
public:
    ILog();
    virtual ~ILog();
    virtual void LogInfo(const char* msg, ...) = 0;
    virtual void LogDebug(const char* msg, ...) = 0;
    virtual void LogWarn(const char* msg, ...) = 0;
    virtual void LogError(const char* msg, ...) = 0;
private: 
    Monkey* monkey;
};
#endif
The methods are pure virtual and therefore must be implemented by deriving classes. If I try to make a class that inherits this interface I get the following linker errors:
Undefined reference to ILog::ILog
Undefined reference to ILog::~ILog
I understand why there is a virtual destructor (to make sure the derived's destructor is called) but I do not understand why I get this linker error.
EDIT: Okay, so I need to define the virtual destructor as well. But can I still perform stuff in the definition of the virtual destructor, or will it simply call my derived classes destructor and skip it? Like, will this trigger:
virtual ~ILog() { delete monkey; }
 
     
     
     
    