1

私が受け取った正確なエラーは次のとおりです。

error C2064: term does not evaluate to a function taking 0 arguments

基本的な論理ゲート シミュレーション ツールを作成しようとしています。これは基本的なロジックの一部にすぎません。これは、この規模の最初のプロジェクトです。以下に含まれているのは、1 つのゲート クラスのコードです。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;
    }

};
4

1 に答える 1

3

operationPtr関数へのポインターではなく、メンバー関数へのポインターです。つまり、逆参照するには、関数を呼び出すオブジェクトも指定する必要があります。あなたはおそらくこれを意味しました:

short int getResult()
{
    (this->*operationPtr)();
    return R;
}
于 2013-08-26T19:14:31.903 に答える