2
プライベートメンバー関数へのポインターの配列を作成しようとしています。配列自体はプライベートですので、それは言う私はなぜ表示されない:ポインターからプライベートメンバーへの関数の配列
error: ‘void Foo::foo1(int)’ is private
これは動作します:
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 [])= {&Foo :: foo1、&Foo :: foo2};をコンストラクタに追加しました。 – blaze