B
Bit Byte
I have the folowing functor declaration:
template < class T, typename ReturnType, typename Parameter >
class Functor : public NonCopyable
{
public:
typedef ReturnType (T::*Method)(Parameter);
inline Functor(T* classInstance, Method method)
:m_instance(classInstance), m_method(method) {}
inline ReturnType operator()(Parameter parameter) { return
(m_instance->*m_method)(parameter); }
inline ReturnType execute(Parameter parameter) { return
operator()(parameter); };
private:
T* m_instance;
Method m_method;
};
The compiler complains as ff:
Error 2 error C2825: 'T': must be a class or namespace when followed by '::'
Error 3 error C2825: 'T': must be a class or namespace when followed by '::'
Error 4 error C2645: no qualified name for pointer to member (found ':: *')
Error 5 error C2143: syntax error : missing ')' before '`global namespace''
Error 6 error C2143: syntax error : missing ';' before '`global namespace''
Error 7 error C2146: syntax error : missing ';' before identifier 'Method'
yada yada ....
???
template < class T, typename ReturnType, typename Parameter >
class Functor : public NonCopyable
{
public:
typedef ReturnType (T::*Method)(Parameter);
inline Functor(T* classInstance, Method method)
:m_instance(classInstance), m_method(method) {}
inline ReturnType operator()(Parameter parameter) { return
(m_instance->*m_method)(parameter); }
inline ReturnType execute(Parameter parameter) { return
operator()(parameter); };
private:
T* m_instance;
Method m_method;
};
The compiler complains as ff:
Error 2 error C2825: 'T': must be a class or namespace when followed by '::'
Error 3 error C2825: 'T': must be a class or namespace when followed by '::'
Error 4 error C2645: no qualified name for pointer to member (found ':: *')
Error 5 error C2143: syntax error : missing ')' before '`global namespace''
Error 6 error C2143: syntax error : missing ';' before '`global namespace''
Error 7 error C2146: syntax error : missing ';' before identifier 'Method'
yada yada ....
???