Ошибка (ошибка C2064) при вызове функции через указатель на функцию

Точная ошибка, которую я получил, была:

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;
}

};

1

Решение

operationPtr это указатель на функцию-член, не указатель на функцию. Это означает, что для разыменования его необходимо также указать объект, для которого вызывается функция. Вы, вероятно, имели в виду это:

short int getResult()
{
(this->*operationPtr)();
return R;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector