首頁 > 後端開發 > C++ > 主體

如何解決 Visual Studio 2015 中的「非標準語法;使用 '&\' 建立指向成員的指標」錯誤?

DDD
發布: 2024-10-31 20:26:02
原創
920 人瀏覽過

How to Resolve

Visual Studio 2015 錯誤C3867:「非標準語法;使用'&' 建立指向成員的指標」

問題:

當嘗試用C 語言開發Tic Tac Toe 遊戲時,使用者遇到錯誤C3867:「非標準語法;使用'&' 建立要記住的指標」。儘管嘗試了建議的解決方案,錯誤仍然存在。如何解決?

答案:

錯誤訊息表示程式碼嘗試使用成員函數名稱而不使用取址運算子 (& ) 建立指向成員函數的指標。

在非成員函數中,可以直接在表達式中使用函數名稱,而無需使用函數呼叫語法。但是,在成員函數中,使用成員函數名稱而不使用呼叫語法是無效的。

要取得指向成員函數的指針,必須使用& 運算子:

<code class="c++">struct Bar {
   void baz() {}
};

&amp;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 &amp;Board.player1Move</code>
登入後複製

透過新增&運算符,程式碼將正確建立指向成員函數的指標:

<code class="c++">void TicTacToe::player1Move(string coordX)
{
  cout << "Enter X: " << endl;
  cin >> coordX;
  _coordX = coordX;
}

Board.&amp;player1Move; // Valid pointer to member function</code>
登入後複製

以上是如何解決 Visual Studio 2015 中的「非標準語法;使用 '&\' 建立指向成員的指標」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!