Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que j'obtiens l'erreur « syntaxe non standard ; utiliser \'&\' pour créer un pointeur vers un membre » dans Visual Studio 2015 ?

Pourquoi est-ce que j'obtiens l'erreur « syntaxe non standard ; utiliser \'&\' pour créer un pointeur vers un membre » dans Visual Studio 2015 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 20:53:02774parcourir

Why Do I Get the

Visual Studio 2015 : Comprendre la « syntaxe non standard ; utilisez '&' pour créer un pointeur vers un membre » Erreur

Lorsque vous travaillez avec des fonctions membres en C, c'est Il est crucial d'utiliser la syntaxe correcte pour y accéder. L'erreur "Syntaxe non standard ; utilisez '&' pour créer un pointeur vers un membre" se produit lorsque vous tentez d'utiliser un nom de fonction membre directement comme pointeur de fonction.

Explication de l'erreur

En C , une fonction non membre peut être utilisée comme pointeur de fonction sans aucune syntaxe supplémentaire. Cependant, lorsqu'il s'agit de fonctions membres, l'utilisation directe du nom de la fonction membre sans la syntaxe d'appel de fonction n'est pas valide. Au lieu de cela, vous devez utiliser l'opérateur & pour obtenir un pointeur vers la fonction membre.

Par exemple, considérons la fonction non membre suivante :

<code class="cpp">void foo()
{
    // Function body
}</code>

Dans ce cas, vous pouvez utilisez directement le nom de la fonction foo dans une expression comme celle-ci :

<code class="cpp">foo; // Evaluates to a function pointer</code>

Considérons maintenant une fonction membre dans une structure :

<code class="cpp">struct Bar
{
    void baz()
    {
        // Function body
    }
};</code>

Tentative d'utiliser le nom de la fonction membre baz directement dans un une expression sans la syntaxe d’appel de fonction entraînera une erreur du compilateur. Au lieu de cela, vous devez utiliser l'opérateur & pour obtenir un pointeur vers la fonction membre :

<code class="cpp">&amp;Bar::baz; // Valid</code>

Résoudre l'erreur dans votre code

Dans votre fichier TicTacToe.cpp, vous définissez deux membres fonctions, player1Move et player2Move, qui génèrent l'erreur à laquelle vous êtes confronté. La bonne façon de définir ces fonctions est d'utiliser l'opérateur & comme suit :

<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>

En apportant ces modifications, vous éliminerez l'erreur "syntaxe non standard" et permettrez à votre programme de accéder correctement aux fonctions membres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn