以下问题让我疯狂,虽然这看起来并不奇怪:
class Foo;
// This is the location of the first error code
// ↓
int (Foo::*)(int) getPointer()
{
return 0;
}
GCC给了我:
error: expected unqualified-id before ')' token
error: expected initializer before 'getPointer'
PS:我用-std = c ++ 11编译
答案 0 :(得分:4)
int ( Foo::* ( getPointer() ) )();
话虽如此,请记住您可以使用typedef
。对于函数指针,它通常会提高整体可读性:
typedef int ( Foo::* TypeName )();
TypeName getPointer();
答案 1 :(得分:0)
使用typedef,例如:
class Foo;
typedef int (Foo::*POINTER)(int);
POINTER getPointer()
{
return 0;
}
有关更多推理,请访问:http://www.parashift.com/c++-faq/typedef-for-ptr-to-memfn.html
答案 2 :(得分:0)
看起来你正在尝试使用函数指针,但没有为它命名:P
使用此:
int (Foo::*myPointer)(int) getPointer()
{
return 0;
}