C++ 模板成员函数不使用';不接受任何类型的参数?

C++ 模板成员函数不使用';不接受任何类型的参数?,c++,templates,arguments,template-function,C++,Templates,Arguments,Template Function,我有以下课程: template<class TYPE, class IDENTIFIER> class Parameter { TYPE typeValue; IDENTIFIER ID; }; template<class IDENTIFIER> class ParameterSystem { template<typename TYPE> void AddParameter(Parameter<TYPE, IDEN

我有以下课程:

template<class TYPE, class IDENTIFIER>
class Parameter
{
    TYPE typeValue;
    IDENTIFIER ID;
};

template<class IDENTIFIER>
class ParameterSystem
{
    template<typename TYPE>
    void AddParameter(Parameter<TYPE, IDENTIFIER> parameter, TYPE value);
};
模板
类参数
{
类型值;
标识符ID;
};
样板
类参数系统
{
样板
void AddParameter(参数参数、类型值);
};
但是,每当我尝试使用AddParameter时,它都会说没有函数重载与参数列表匹配。我尝试了各种可能的组合。例如:

typedef unsigned int               ResourceIndex; //I use unsigned ints to reference resources in my other(resource system)
typedef unsigned int               DefaultParameterID;
typedef Parameter<ResourceIndex, DefaultParameterID>     ResourceParameter;
typedef无符号int-ResourceIndex//我使用未签名整数引用我的其他(资源系统)中的资源
typedef unsigned int DefaultParameterID;
typedef参数ResourceParameter;
那么我就这样使用它:

ParameterSystem<DefaultParameterID> parameterSystem;
ResourceParameter param;
//do some stuff with param;
parameterSystem.AddParameter<ResourceIndex>(param, param.typeValue); //here it gives the error
参数系统参数系统;
ResourceParameter参数;
//用param做一些事情;
parameterSystem.AddParameter(参数,参数类型值)//这里给出了错误
这不起作用,Intellisense告诉我它与参数列表不匹配,即使它匹配。参数列表应该是(参数,无符号int),这就是它。我会做错什么?(对于那些感兴趣的人来说,AddParameter所做的是获取typeValue的值并将其设置为参数系统内映射中的一个空指针,然后将该值的映射键与参数的ID同步,并且该参数还有一个到其父参数系统的句柄,因此从它的ID和typecheck+typecast,它总是可以设置系统中响应其ID的参数值,但这与我认为的问题无关……

尝试在函数参数列表中的模板类型之前添加“typename”:

void AddParameter(typename Parameter<TYPE, IDENTIFIER> parameter, TYPE value) {...}
void AddParameter(类型名参数,类型值){…}

这是您的真实代码吗?函数名为
AddParameter
,您正在调用
Add
。此外,Intellisense不是编译器。编译器对此有何评论?哦,是的,我编辑了它,很抱歉。
void AddParameter中的
IDENTIFIER
在哪里(参数…
?请公布编译器给出的确切错误。如果将类公开,请使用gcc、clang和icc进行编译。
typename
是嵌套名称所必需的,此处不适用。