これは実際にはチェスプレイプログラム用ですが、コードが長すぎてここに投稿できないため、より単純な無関係の例を使用します。
私がこのようなオブジェクトを持っているとしましょう:
class A{
int x1;
int x2;
public:
int Average(){ return (x1+x2)/2; }
};
すべてのオブジェクトのすべてのx1およびx2値のすべての平均(またはそれらへのポインター)を格納するAveragesListというベクトルが必要です。だから私はこれをやってみました:
vector<int>* AveragesList;
class A{
int x1;
int x2;
public:
int Average(){ return (x1+x2)/2; }
A(){ AveragesList.push_back(this->Average); } //trying to add pointer to member function Average() to AveragesList
};
しかし、これを試してみると、「バインドされた関数へのポインターは、関数を呼び出すためにのみ使用できます」というメッセージが表示されます。回避策はありますか?x1またはx2の値が変更されても、AveragesListの値は変更されないため、単純にx1とx2の平均値をAveragesListに入れたくありません。また、私の本はC ++クラスでパブリック変数を使用しないと言っていたので、パブリック変数を使用すべきかどうかわかりません。