我从GitHub克隆了一个项目,该项目针对Linux(使用Linux专用套接字)实现,可在带有VC ++的Windows中使用。
已经修改了所需的部分以匹配窗口,但是编译了singleton
类时,出现了我不知道的错误,搜索类似的问题也没有给我任何提示。
错误C2990:'ISingleton':非类模板已被声明为类模板
Singleton.h
------------
#define SINGLETON_ACCESS friend class ISingleton;
template<class T>
class ISingleton {
protected:
ISingleton() {}
static T* mInstance;
public: virtual ~ISingleton(){}
} /* class ISingleton */
template<class T>
T* ISingleton<T>::mInstance = NULL;
和
factory.h
-----------
namespace J1939 {
class J1939Frame;
class J1939Factory : public ISingleton<J1939Factory> {
SINGLETON_ACCESS; /* <---Getting Error Here */
virtual ~J1939Factory();
private:
J1939Factory();
/* ..... */
}
答案 0 :(得分:2)
问题是您定义了friend
类ISingleton
friend class ISingleton;
其中ISingleton
是模板类。
template<class T>
class ISingleton { /* ... */ };
您不能:定义friend
,而必须为其指定模板类型;例如(您想要什么?)
friend class ISingleton<J1939Factory>;