Visual Studio 2015 錯誤C3867:「非標準語法;使用'&' 建立指向成員的指標」
問題:
當嘗試用C 語言開發Tic Tac Toe 遊戲時,使用者遇到錯誤C3867:「非標準語法;使用'&' 建立要記住的指標」。儘管嘗試了建議的解決方案,錯誤仍然存在。如何解決?
答案:
錯誤訊息表示程式碼嘗試使用成員函數名稱而不使用取址運算子 (& ) 建立指向成員函數的指標。
在非成員函數中,可以直接在表達式中使用函數名稱,而無需使用函數呼叫語法。但是,在成員函數中,使用成員函數名稱而不使用呼叫語法是無效的。
要取得指向成員函數的指針,必須使用& 運算子:
<code class="c++">struct Bar { void baz() {} }; &Bar::baz; // Valid</code>
應用這個概念到提供的程式碼中,問題出現在player1Move函數中:
<code class="c++">void TicTacToe::player1Move(string coordX) // ERROR { cout << "Enter X: " << endl; cin >> coordX; _coordX = coordX; }</code>
在這段程式碼中,player1Move函數是TicTacToe類別的成員函數,錯誤是由於使用函數名稱引起的不使用位址運算符的player1Move:
<code class="c++">Board.player1Move; // ERROR: Should be Board.player1Move() or &Board.player1Move</code>
透過新增&運算符,程式碼將正確建立指向成員函數的指標:
<code class="c++">void TicTacToe::player1Move(string coordX) { cout << "Enter X: " << endl; cin >> coordX; _coordX = coordX; } Board.&player1Move; // Valid pointer to member function</code>
以上是如何解決 Visual Studio 2015 中的「非標準語法;使用 '&\' 建立指向成員的指標」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!