プライベート メンバー関数へのポインターの配列を作成しようとしています。配列自体は非公開であるため、次のように表示される理由がわかりません。
エラー: '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) {}