这其实是为了一个国际象棋程序,但是代码太长不能在此贴出,所以我将使用一个更简单、不相关的例子:
假设我有一个这样的对象:
class A{
int x1;
int x2;
public:
int Average(){ return (x1+x2)/2; }
};
我希望有一个向量称为AveragesList,它存储所有对象的x1和x2值的平均值(或指向它们的指针)。因此我尝试这样做:
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++类中使用公共变量,所以我不确定是否应该使用一个。
AveragesList.push_back(this->Average());
,其中:vector<int> AveragesList;
。 - Alok Save