У меня есть общий математический метод, который работает под множеством функций (с большим количеством переменных и состояний, поэтому он не может быть статическим). Я реализовал метод в родительском классе, и я хочу объявить о другом наборе функций в каждом дочернем классе.
Я пытаюсь сделать что-то вроде этого:C++ function-pointer и inheritance
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: '=': не удается преобразовать из 'междунар (__thiscall B :: *) (пустот)' в 'A :: func'
Или «IntelliSense: указатель на связанную функцию может использоваться только для вызова функции», если я пытаюсь использовать & this-> f;
Я не понимаю, что вы пытаетесь сделать. Пожалуйста, развернитесь дальше. –
Какая у вас фотография? Кроме того, вместо ручного распределения используйте 'std :: vector'. – GManNickG
Есть ли причина, по которой вы не можете реорганизовать приложение для использования виртуальных функций? Похоже, вы пытаетесь переопределить языковые возможности. –