Как я могу использовать элемент указателя статической функции в шаблоне моего класса?Элемент указателя статической функции в шаблоне класса
Я работаю с C++ в Visual Studio, и мой код выглядит примерно следующим образом:
template<typename T>
class ClassTemplate
{
public:
static T* CallIt() { return ClassTemplate<T>::mFunctionPointer(); }
private:
static T* (*mFunctionPointer)();
};
Когда я компилирую, я получаю сообщение об ошибке «неразрешенный внешний символ». Я думаю, что я должен сделать что-то вроде этого снаружи объявления класса:
template<typename T>
T* (ClassTemplate<T>::*mFunctionPointer)() = NULL;
К сожалению, тогда я получаю C2998, «не может быть определением шаблона».
Любые идеи?
Не то, чтобы это решило вашу ошибку компилятора, но помните, что шаблоны + заголовки не так хорошо смешиваются. Вы должны включить реализацию в каждую единицу перевода, в которой вы используете шаблон. –
Спасибо Merlyn, но у меня все есть в моем заголовке. –