Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 非类模板已声明为类模板_C++_Templates_Visual C++_Friend - Fatal编程技术网

C++ 非类模板已声明为类模板

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

我从GitHub克隆了一个项目,该项目是针对Linux(使用Linux特定的套接字)实现的,可以在windows和VC++中使用

我修改了所需的部分以匹配windows,但是编译了
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>;