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 ?
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.
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">&Bar::baz; // Valid</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!