我正在尝试编写一个模板类,该类包含对其模板参数类型的对象的引用,以及指向不返回该类的 arg 成员函数的 void 的指针。'<unresolved function type>'
但是,我在编译时遇到错误。
template<class T>
class memberAction
{
public:
memberAction(void (T::*func)() , T& object);
private:
void (T::*m_func)();
T& m_object;
};
template<class T>
memberAction<T>::memberAction(void (T::*func)() , T& object)
{
m_func = func;
m_object = object;
}
class File
{
public:
File();
void TELUNUS_Open();
//memberAction<File>& getOpenAction();
private:
memberAction<File> m_OpenAction;
};
File::File():
m_OpenAction(TELUNUS_Open,*this)//Line with error on it
{
}
void File::Open()
{
//
}
使用 g++ 4.7.2 编译我收到以下错误消息:
StackOverloadErrorExample.cpp|31|error: no matching function for call to 'memberAction<File>::memberAction(<unresolved overloaded function type>, File&)'|
似乎有类似编译器错误的其他人将指向全局函数的指针与指向成员函数的指针混淆了,但我特别声明构造函数采用指向其模板参数的成员函数的指针,并将其传递给正确类型的成员函数.
那么如何解决这个编译器错误呢?