Точная ошибка, которую я получил, была:
error C2064: term does not evaluate to a function taking 0 arguments
Я пытаюсь создать базовый инструмент моделирования логических элементов. Это всего лишь часть базовой логики, это мой первый проект такого масштаба. то, что я включил ниже, — это код для одного класса ворот, класс ворот AND будет наследовать свойства от этого базового класса. Моя ошибка происходит при вызове указателя функции.
class gate
{
protected:
short int A,B;//These variables represent the two inputs to the Gate.
public:
short int R;//This variable stores the result of the Gate
gate *input_1, *input_2;//Pointers to Inputs
void (gate::*operationPtr)();
void doAND()//Does AND operation
{
R=A&&B;
operationPtr=&gate::doAND;
}
short int getResult()
{
operationPtr();//ERROR OCCURS HERE
return R;
}
};
operationPtr
это указатель на функцию-член, не указатель на функцию. Это означает, что для разыменования его необходимо также указать объект, для которого вызывается функция. Вы, вероятно, имели в виду это:
short int getResult()
{
(this->*operationPtr)();
return R;
}
Других решений пока нет …