您的位置:首页 > 编程语言 > C语言/C++

C++: undefined reference to vtable

2012-11-29 17:14 411 查看
单件模式如果按方法一写,所有用到单件模式的类声明中不允许再次定义构造和析构函数,但是类实现中必须实现构造和析构函数。如果不实现析构函数,就会报“undefined reference to 'vtable for classname'”错误。

单件模式一:

#define PATTERN_SINGLETON_DECLARE(classname) \

private: \

classname(); \

public: \

static classname * instance(); \

virtual ~classname();

#define PATTERN_SINGLETON_IMPLEMENT(classname) \

classname * classname::instance() \

{ \

static classname * _instance = NULL; \

if( NULL == _instance) \

{ \

_instance = new classname; \

} \

return _instance; \

}

单件模式二:

#define PATTERN_SINGLETON_DECLARE(classname) \

static classname * instance();

#define PATTERN_SINGLETON_IMPLEMENT(classname) \

classname * classname::instance() \

{ \

static classname * _instance = NULL; \

if( NULL == _instance) \

{ \

_instance = new classname; \

} \

return _instance; \

}

其他出现这个错误原因类似,虚函数的问题 http://hi.baidu.com/wind_stay/item/6c1e540a20812e163b53ee13
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: