返回指向类成员函数的指针

时间:2013-11-13 18:56:41

标签: c++ pointers gcc c++11 member-function-pointers

以下问题让我疯狂,虽然这看起来并不奇怪:

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编译

3 个答案:

答案 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;
}