首頁 >後端開發 >C++ >為什麼在 Visual Studio 2015 中出現「非標準語法;使用「&」建立指向成員的指標」錯誤?

為什麼在 Visual Studio 2015 中出現「非標準語法;使用「&」建立指向成員的指標」錯誤?

Patricia Arquette
Patricia Arquette原創
2024-10-31 20:53:02896瀏覽

Why Do I Get the

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

在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">&amp;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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn