Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur « syntaxe non standard ; utiliser \'&\' pour créer un pointeur vers un membre » dans Visual Studio 2015 ?

Comment résoudre l'erreur « syntaxe non standard ; utiliser \'&\' pour créer un pointeur vers un membre » dans Visual Studio 2015 ?

DDD
DDDoriginal
2024-10-31 20:26:02921parcourir

How to Resolve

Visual Studio 2015 Erreur C3867 : "syntaxe non standard ; utilisez '&' pour créer un pointeur vers un membre"

Question :

Lorsque vous essayez de développer un jeu Tic Tac Toe en C , un utilisateur a rencontré l'erreur C3867 : "syntaxe non standard ; utilisez '&' pour créer un pointeur à retenir". Malgré les tentatives de solutions suggérées, l'erreur persiste. Comment peut-il être résolu ?

Réponse :

Le message d'erreur indique que le code tente d'utiliser un nom de fonction membre sans utiliser l'opérateur d'adresse de (& ) pour créer un pointeur vers la fonction membre.

Dans les fonctions non membres, le nom de la fonction peut être utilisé directement dans une expression sans utiliser la syntaxe d'appel de fonction. Cependant, dans les fonctions membres, l'utilisation du nom de la fonction membre sans la syntaxe d'appel n'est pas valide.

Pour obtenir un pointeur vers une fonction membre, l'opérateur & doit être utilisé :

<code class="c++">struct Bar {
   void baz() {}
};

&amp;Bar::baz;   // Valid</code>

Application ce concept au code fourni, le problème se produit dans la fonction player1Move :

<code class="c++">void TicTacToe::player1Move(string coordX) // ERROR
{
  cout << "Enter X: " << endl;
  cin >> coordX;
  _coordX = coordX;
}</code>

Dans ce code, la fonction player1Move est une fonction membre du Classe TicTacToe, et l'erreur est causée par l'utilisation du nom de fonction player1Move sans l'opérateur d'adresse :

<code class="c++">Board.player1Move; // ERROR: Should be Board.player1Move() or &amp;Board.player1Move</code>

En ajoutant l'opérateur &, le code créera correctement un pointeur vers la fonction membre :

<code class="c++">void TicTacToe::player1Move(string coordX)
{
  cout << "Enter X: " << endl;
  cin >> coordX;
  _coordX = coordX;
}

Board.&amp;player1Move; // Valid pointer to member function</code>

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