我已经阅读了许多有类似问题的人的问题,但大多数时候他们归结为人们使用函数指针而不是方法指针,或者在创建指针实例时省略了类范围。但是我没有做这些(我认为......):
class Test
{
public:
Test() { mFuncPtrs.insert( 10, &Test::Func<int> ); } // Error!
template <class T>
void Func() {}
private:
typedef void ( Test::*FuncPtr )();
std::map<int, FuncPtr> mFuncPtrs;
};
但这给出了:
error: no matching function for call to ‘std::map<int, void (Test::*)(), std::less<int>, std::allocator<std::pair<const int, void (Test::*)()> > >::insert(int, <unresolved overloaded function type>)’
但是我对模板类型很明确,提供了方法的全部范围,并且Func()
没有重载!如果它有任何区别,我正在使用 g++ v4.1.2。