我有一个通用的数学方法,它在一组函数下运作(具有许多变量和状态,因此无法静态执行)。我已经在父类中实现了该方法,并希望在每个子类中声明不同的函数集。
我尝试做如下操作:
class A {
public:
typedef int (A::*func)();
func * fs;
void f() { /*call functions from this->fs*/ }
};
class B : public A {
public:
int smth;
B(int smth) {
this->smth = smth; //user-provided variables
//there may be a lot of functions with same interface
this->fs = new func[1];
fs[0] = &B::f;
}
int f() {
return smth + 1;
}
};
出现以下错误: 错误 C2440: '=' : 无法将类型为 'int (__thiscall B::* )(void)' 的参数转换为类型为 'A::func' 的参数
或者如果尝试使用 &this->f,则会出现 "IntelliSense:只能使用绑定函数的指针来调用函数" 的错误提示。
std::vector
而不是手动分配。 - GManNickG