私が書いているいくつかのコードには、次の行があり、エラー C2064 が発生します。
rs_opCodes[cur_block]();
rs_opCodes は次のように定義されています。
typedef void (rsInterpreter::*rs_opCode)();
rs_opCode rs_opCodes[NUM_OPCODES];
エラー C2064 が表示される理由を知っている人はいますか?
私が書いているいくつかのコードには、次の行があり、エラー C2064 が発生します。
rs_opCodes[cur_block]();
rs_opCodes は次のように定義されています。
typedef void (rsInterpreter::*rs_opCode)();
rs_opCode rs_opCodes[NUM_OPCODES];
エラー C2064 が表示される理由を知っている人はいますか?
メソッド ポインター呼び出しの構文を使用する必要がありますが、実際の呼び出しを行うオブジェクトが必要です。typedef は、rsInterpreter 型のオブジェクトのメソッドへのポインターを定義していることを示しているため、その型のオブジェクトが必要であることに注意してください。
rsInterpreter r;
(r.*rs_opCodes[cur_block])();
しかし、この考え全体は私にはあまり意味がありません。オブジェクトで呼び出されるメソッド ポインターの配列を記述しています...最初の考えでは、このタイプのコードの使用可能な例が思い浮かびません...
rs_opCode
( class の) メンバ関数へのポインタとして定義しましたrsInterpreter
。そのような獣を呼び出すには、構文が必要です
(object.*rs_opCodes[cur_block])();
また
(pointer->*rs_opCodes[curr_block])();
メソッド ポインタとして定義rs_opCode
しましたが、関数ポインタとして使用しています。