Visual Studio 2015 で「非標準の構文。メンバーへのポインターを作成するには「&」を使用してください」というエラーが発生するのはなぜですか?

Patricia Arquette
リリース: 2024-10-31 20:53:02
オリジナル
774 人が閲覧しました

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>
ログイン後にコピー

構造体で baz メンバー関数名を直接使用しようとします。関数呼び出し構文のない式を使用すると、コンパイラ エラーが発生します。代わりに、& 演算子を使用してメンバー関数へのポインターを取得する必要があります。

<code class="cpp">&amp;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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!