私のクラスはで定義されてdll
おり、私が紹介している1つのクラスにはdll
がありfunction template
ます。この関数は他のメンバー関数を呼び出していますが、クライアントコードを作成すると、VisualStudioコンパイラで`非テンプレート関数のリンクエラーが発生します。
これが私function template
のheader
void insertMetaInformation(std::string className, char const* typeString, void* pProperty);
template <typename CLASS, typename T>
void RegisterMember( std::string className,
std::string propertyName,
std::string realClassName,
typename MemberProperty<CLASS, T>::GetterType getFn,
typename MemberProperty<CLASS, T>::SetterType setFn,
typename MemberProperty<CLASS, int>::LengthType lenFn = NULL,
typename MemberProperty<CLASS, T>::ElemLenType elemLenFn = NULL )
{
MemberProperty<CLASS, T>* pProperty = new MemberProperty<CLASS, T>();
pProperty->m_getterFn = getFn;
pProperty->m_setterFn = setFn;
pProperty->m_lenFn = lenFn;
pProperty->m_elementLenFn = elemLenFn;
pProperty->m_propertyName = propertyName;
pProperty->m_realClassName = realClassName;
char const *typeString = ToString<T>::value();
insertMetaInformation(className, typeString, static_cast<void*>(pProperty));
}
ファイルに実装insertMetaInformation
しました。.cpp