Maison > développement back-end > C++ > 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
Libérer: 2024-10-31 20:53:02
original
891 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

Considérons maintenant une fonction membre dans une structure :

<code class="cpp">struct Bar
{
    void baz()
    {
        // Function body
    }
};</code>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion
<code class="cpp">// Corrected version of player2Move
void TicTacToe::player2Move(string coordX)
{
    cout << "Enter X: " << endl;
    cin >> coordX;
    _coordX = coordX;
}</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal