【发布时间】:2012-05-11 10:51:43
【问题描述】:
我正在尝试创建一个指向私有成员函数的指针数组。数组本身是私有的,所以我不明白为什么它说:
错误:'void Foo::foo1(int)' 是私有的
这行得通:
class Foo {
public:
Foo();
void foo1(int);
void foo2(int);
private:
void (Foo::*someMethods[])(int);
void foo3(int);
};
Foo::Foo() {}
void (Foo::*someMethods[])(int) = {&Foo::foo1, &Foo::foo2};
void Foo::foo1(int) {}
void Foo::foo2(int) {}
void Foo::foo3(int) {}
这不起作用:
class Foo {
public:
Foo();
private:
void (Foo::*someMethods[])(int);
void foo1(int);
void foo2(int);
void foo3(int);
};
Foo::Foo() {}
void (Foo::*someMethods[])(int) = {&Foo::foo1, &Foo::foo2};
void Foo::foo1(int) {}
void Foo::foo2(int) {}
void Foo::foo3(int) {}
【问题讨论】:
-
所以,我在构造函数中添加了:
void (Foo::*someMethods[])(int) = {&Foo::foo1, &Foo::foo2};,它现在可以工作了。
标签: c++ function-pointers