Шаблонная функция-член не принимает аргументы любого типа?

У меня есть следующие классы:

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 и устанавливает его в пустой указатель на карте внутри системы параметров, а затем он синхронизирует ключ карты для этого значения с идентификатором параметра, и у параметра также есть дескриптор к его родительской системе параметров, поэтому из его ID и проверки типов + typecast всегда можно получить значение параметра в системе, которое отвечает его идентификатору, но это не должно относиться к вопросу, который я думаю …)

0

Решение

Попробуйте добавить «typename» перед типом шаблона в списке аргументов функции:

void AddParameter(typename Parameter<TYPE, IDENTIFIER> parameter, TYPE value) {...}
-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]