对子类的vtable的未定义引用

时间:2015-06-30 21:04:45

标签: c++

很抱歉,如果它是重复的!我的问题是未定义的对继承类的vtable的引用。我已经检查过,在基类中没有未定义的纯虚方法。它们都是定义的。但问题仍然存在。 “未定义的参考'vtable for sigListener'

这是基类:

 },
"aoColumns": [
    { "aaData": "thumbnail" },
    { "aaData": "title" },
    { "aaData": "category" },
    { "aaData": "price" },
    { "aaData": "date_post" },
    { "aaData": "actions" }]

这是一个名为sigListener.h的继承类:

class SIM_API cIListener
{
friend class cComponent;
friend class cResultFilter; 
private:
int subscribecount;
public:
cIListener();
virtual ~cIListener();
virtual void receiveSignal(cComponent *source, simsignal_t signalID, bool b) = 0;
virtual void receiveSignal(cComponent *source, simsignal_t signalID, long l) = 0;
virtual void receiveSignal(cComponent *source, simsignal_t signalID, unsigned long l) = 0;
virtual void receiveSignal(cComponent *source, simsignal_t signalID, double d) = 0;
virtual void receiveSignal(cComponent *source, simsignal_t signalID, const SimTime& t) = 0;
virtual void receiveSignal(cComponent *source, simsignal_t signalID, const char *s) = 0;
virtual void receiveSignal(cComponent *source, simsignal_t signalID, cObject *obj) = 0;
virtual void finish(cComponent *component, simsignal_t signalID) {}
virtual void subscribedTo(cComponent *component, simsignal_t signalID) {}
virtual void unsubscribedFrom(cComponent *component, simsignal_t signalID) {}
int getSubscribeCount() const  { return subscribecount; }
};

这是sigListener.cc:

#ifndef SIGLISTENER_H_
#define SIGLISTENER_H_

#include "coordObj.h"
#include "clistener.h"

class sigListener : public cIListener
{
public :
void receiveSignal(cComponent *source, simsignal_t signalID, bool b) { }
void receiveSignal(cComponent *source, simsignal_t signalID, long l) { }
void receiveSignal(cComponent *source, simsignal_t signalID, unsigned long l) { }
void receiveSignal(cComponent *source, simsignal_t signalID, double d);
void receiveSignal(cComponent *source, simsignal_t signalID, const SimTime& t) { }
void receiveSignal(cComponent *source, simsignal_t signalID, const char *s) { }
void receiveSignal(cComponent *source, simsignal_t signalID, cObject *obj) { }

};

1 个答案:

答案 0 :(得分:0)

This question有几个答案。

  • 您需要在sigListener班级
  • 中使用析构函数
  • 正如该问题的答案之一所指出的那样,如果他们单独编译并且您没有将所有必需的对象链接在一起,那么您可能会收到此错误。