我有以下课程:
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);
};
但是,每当我尝试使用 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;
所以我像这样使用它:
ParameterSystem<DefaultParameterID> parameterSystem;
ResourceParameter param;
//do some stuff with param;
parameterSystem.AddParameter<ResourceIndex>(param, param.typeValue); //here it gives the error
这不起作用,Intellisense 告诉我它与参数列表不匹配,即使它匹配。参数列表应该是 (Parameter, unsigned int) 就是这样。我做错了什么?(对于感兴趣的人,AddParameter 所做的是它获取 typeValue 的值并将其设置为参数系统内 Map 中的 void 指针,然后将该值的映射键与参数的 ID 同步,并且参数也有句柄到它的父参数系统,所以从它的 ID 和类型检查 + 类型转换它总是可以在系统中获取响应它的 ID 的参数值,但这不应该与我认为的问题相关......)