在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>
嘗試直接在沒有函數呼叫語法的表達式將導致編譯器錯誤。相反,您需要使用& 運算子來取得指向成員函數的指標:
<code class="cpp">&Bar::baz; // Valid</code>
在TicTacToe.cpp 檔案中,您定義了兩個成員函數,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中文網其他相關文章!