erreur: l'utilisation de typedef-nom après la classe
Je ne peux pas comprendre quel est le véritable problème avec cela.
typedef struct _actor
{
...
} _actor, Actor;
class Actor
{
...
};
- Je obtenir cette étrange message d'erreur actor.cpp:31: error: using typedef-name ‘Actor’ after ‘class’
.
Une idée de ce que j'ai fait de mal ici? Merci 🙂
BTW, la définition de type-struct artefact est utilisé uniquement dans C, où la structure des noms et des autres types de noms de résider dans des espaces de noms différents (pour ne pas être prévu en C++ sens); en C++ struct et les noms de classe peut être utilisé "normalement", de sorte que le ce C-typedef idiome n'est pas nécessaire.
Je vais aller sur une branche et suppose que vous êtes l'obtention de ces †caractères dans le message d'erreur parce que vous êtes à l'aide de mastic et de la nécessité de définir les "données Reçues supposé être dans le jeu de caractères" option UTF-8.
Je vais aller sur une branche et suppose que vous êtes l'obtention de ces †caractères dans le message d'erreur parce que vous êtes à l'aide de mastic et de la nécessité de définir les "données Reçues supposé être dans le jeu de caractères" option UTF-8.
OriginalL'auteur Bocochoco | 2010-09-22
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas autorisé à définir le symbole
Actor
plus d'une fois. Letypedef
déclaration définit le symboleActor
comme un alias pourstruct _actor
avant de tenter de déclarer une classe du même nom.Je devine que vous êtes à l'aide de la
gcc
compilateur. J'obtiens les erreurs suivantes lorsque je compile avecgcc
:Le premier message (en pointant le
class Actor
ligne dans le programme) stipule que vous ne pouvez pas déclarer une classe avec untypedef-name
(Actor
est déjà déclarée à l'aide detypedef
). Le deuxième message (indiquant latypedef struct _actor
ligne dans le programme) est un peu plus clair et se réfère aux multiples déclarations pourActor
.Il est très commun en C/C++ pour une seule classe d'erreur comme ceci à la suite de plusieurs erreurs de compilation et souvent les plus utiles message n'est pas le premier.
Tout simplement, vous essayez de créer deux types différents avec le même nom.
Merci à vous :). Retrait de l'Acteur , à la fin semble avoir résolu le problème.
Encore, je ne comprends pas pourquoi vous utilisez la définition de type.
OriginalL'auteur Richard Cook
De comprendre ce qui se passe, nous devons briser la première instruction dans les parties:
D'abord, nous créons une structure appelée
_actor
. Ensuite, nous créons un typedef pourstruct _actor
appelé_actor
. Ce n'est utile que dans C. Il nous permet de dire:au lieu de
Mais en C++, il n'est pas nécessaire, comme le C++ permet d'utiliser la première forme nativement, sans la définition de type.
La troisième ligne crée un deuxième typedef pour
struct _actor
appeléActor
.Lorsque vous essayez de créer une classe nommée
Actor
le compilateur se plaint, que ce nom est déjà utilisé pour l'alias de la structure.Maintenant, il semble probable que dans le code en C d'origine, l'auteur avait l'intention
struct _actor
à n'être qu'un détail d'implémentation, et que vous utilisez toujours justeActor
à se référer à des instances de cette structure. Par conséquent, dans votre code C++, vous devriez probablement éliminer les typedefs entièrement, et il suffit de renommer les struct. Cependant, ce qui vous donnera:Donc, peut-être même que vous devriez regarder dans la fusion de ces deux classes.
OriginalL'auteur James Curran
pour arduino hectop imprimante 3d:
Renommer
fpos_t
variables dansSdBaseFile.h
etSdBaseFile.cpp
à un autre nom, commefpos_t1
et de recompiler.OriginalL'auteur hani