C でメンバー関数を操作する場合、正しい構文を使用してアクセスすることが重要です。メンバー関数名を関数ポインターとして直接使用しようとすると、「非標準の構文。メンバーへのポインターを作成するには '&' を使用してください」というエラーが発生します。
C では、追加の構文を必要とせずに、非メンバー関数を関数ポインターとして使用できます。ただし、メンバー関数を扱う場合、関数呼び出し構文を使用せずにメンバー関数名を直接使用することは無効です。代わりに、& 演算子を使用してメンバー関数へのポインターを取得する必要があります。
たとえば、次の非メンバー関数について考えてみましょう。
<code class="cpp">void foo() { // Function body }</code>
この場合、次のようにすることができます。次のような式で foo 関数名を直接使用します。
<code class="cpp">foo; // Evaluates to a function pointer</code>
次に、構造体内のメンバー関数について考えます。
<code class="cpp">struct Bar { void baz() { // Function body } };</code>
構造体で baz メンバー関数名を直接使用しようとします。関数呼び出し構文のない式を使用すると、コンパイラ エラーが発生します。代わりに、& 演算子を使用してメンバー関数へのポインターを取得する必要があります。
<code class="cpp">&Bar::baz; // Valid</code>
TicTacToe.cpp ファイルで、2 つのメンバーを定義します。 player1Move と player2Move の関数により、直面しているエラーが発生します。これらの関数を定義する正しい方法は、次のように & 演算子を使用することです:
<code class="cpp">// Corrected version of player1Move void TicTacToe::player1Move(string coordX) { cout << "Enter X: " << endl; cin >> coordX; _coordX = coordX; }</code>
<code class="cpp">// Corrected version of player2Move void TicTacToe::player2Move(string coordX) { cout << "Enter X: " << endl; cin >> coordX; _coordX = coordX; }</code>
これらの変更を行うことで、「非標準構文」エラーが排除され、プログラムで次のことが可能になります。メンバー関数に正しくアクセスします。
以上がVisual Studio 2015 で「非標準の構文。メンバーへのポインターを作成するには「&」を使用してください」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。