Maison > développement back-end > C++ > le corps du texte

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

DDD
Libérer: 2024-10-31 20:26:02
original
920 Les gens l'ont consulté

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

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

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

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

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!