私は次のクラスを持っています:
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は、それが引数リストと一致しないことを教えてくれます.興味のある方は、AddParameter が行うことは、typeValue の値を取得し、パラメーター システム内のマップ内の void ポインターに設定し、その値のマップ キーをパラメーターの ID と同期し、パラメーターにもハンドルがあることです。それは親パラメーターシステムなので、IDとタイプチェック+タイプキャストから、IDに応答するシステムのパラメーター値を常に取得できますが、それは私が思う質問には関係ありません...)