C++ 非类模板已声明为类模板
我从GitHub克隆了一个项目,该项目是针对Linux(使用Linux特定的套接字)实现的,可以在windows和VC++中使用 我修改了所需的部分以匹配windows,但是编译了C++ 非类模板已声明为类模板,c++,templates,visual-c++,friend,C++,Templates,Visual C++,Friend,我从GitHub克隆了一个项目,该项目是针对Linux(使用Linux特定的套接字)实现的,可以在windows和VC++中使用 我修改了所需的部分以匹配windows,但是编译了singleton类,我得到了一个错误,对此我没有任何线索,搜索类似的问题也没有给我任何提示 错误C2990:“ISingleton”:非类模板已声明为类模板 Singleton.h ------------ #定义SINGLETON_访问好友类ISingleton; 模板 伊辛格尔顿级{ 受保护的: ISinglet
singleton
类,我得到了一个错误,对此我没有任何线索,搜索类似的问题也没有给我任何提示
错误C2990:“ISingleton”:非类模板已声明为类模板
Singleton.h
------------
#定义SINGLETON_访问好友类ISingleton;
模板
伊辛格尔顿级{
受保护的:
ISingleton(){}
静态T*mInstance;
public:virtual~ISingleton(){}
}/*伊辛格尔顿级*/
模板
T*ISingleton::MinInstance=NULL;
及
factory.h
-----------
名称空间J1939{
J1939级机架;
J1939类工厂:公共伊辛格尔顿{
SINGLETON_ACCESS;/*问题在于您定义了friend
类ISingleton
friend class ISingleton;
其中,ISingleton
是一个模板类
template<class T>
class ISingleton { /* ... */ };
问题是您定义了friend
类ISingleton
friend class ISingleton;
其中,ISingleton
是一个模板类
template<class T>
class ISingleton { /* ... */ };
谢谢,为了解释,所以如果其他类也想使用<代码> IsIGNELTON/CONDE>如何定义它。我的意思是我是C++新手,不知道为什么创建一个类,扩展了 iSigelon < /Cord> >调用宏不会。work@Amir-穆萨维-不确定是否理解您的问题;考虑一下ISingleton
是什么不是类而是类的集合;您可以声明friend
类,而不是完整集合;因此您必须指定所需的模板参数(在本例中仅为类型)我不明白你为什么要<代码> iSigelon 代码>朋友< /C> >,我应该接受它而不是调用宏,<代码>朋友类ISIGNETLon;< /代码>谢谢,为了解释,所以如果其他类也想要使用<代码> IsIGNELTON <代码>它应该如何定义。我的意思是我是C++的新手,不知道C之后为什么会这样。使用扩展的ISingleton
创建类调用宏不会work@Amir-Mousavi-不确定是否理解您的问题;考虑到ISingleton
不是一个类而是一个类的集合;您可以声明friend
一个类,而不是整个集合;因此您必须指定所需的模板参数s(在本例中仅为一种类型)。我不明白您为什么想要ISingleton
friend
。好吧,我应该接受它作为答案,而不是调用宏,friend类ISingleton;
friend class ISingleton<J1939Factory>;