通过函数指针调用函数时出错(错误C2064)

时间:2013-08-26 19:03:06

标签: c++ visual-studio class function-pointers boolean-logic

我收到的确切错误是:

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 个答案:

答案 0 :(得分:2)

operationPtr是指向成员函数的指针,不是指向函数的指针。这意味着要取消引用它,您还必须提供一个对象,调用该函数。你可能意味着这个:

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