Ceci est un message d'erreur très frustrant dans QT Creator: Toute suggestion? P> 'xyz' ne nomme pas de type code>. Cela signifie généralement qu'il existe une erreur dans la classe
xyz code> qui empêche le compilateur de générer le type, mais il n'y a pas de conseils supplémentaires quant à ce qui s'est mal passé. P>
11 Réponses :
est-ce que # inclut l'aide du fichier d'en-tête correspondant? p>
Non, je me suis assuré que je l'ai inclus.
Pourriez-vous s'il vous plaît poster un exemple complet qui est autonome pour que nous puissions réellement regarder quelque chose? Peut battre deviner :)
Je ne sais pas quoi chercher ... Cela se passe dans un projet avec 100 fichiers.
Si vous utilisez des modèles, vous devez précéder le nom de la classe avec "typename" afin que le compilateur puisse la reconnaître comme un type ...
template <typename t> //...
Obtenez-vous l'erreur du compilateur ou de l'IDE (sous forme de soulignement rigide)? J'ai rencontré cela dans Qt Creator 1.2.9 et je pense que c'est un bug dans l'IDE. P>
Je pense que vous déclarez que vous déclarez quelque chose de type xyz tel que le problème est XYZ n'est pas encore défini. P> Ce qui suit est mon problème et ma conclusion. Que pensez-vous? P> Mon problème est que j'ai une classe ABC et une classe XYZ. La classe ABC a un membre qui est déclaré comme un type XYZ. La classe XYZ a un membre qui est déclaré comme type ABC. Le compilateur ne sait pas ce que le type XYZ est encore parce qu'il ne l'a pas encore défini. Par conséquent, l'erreur donnée est "xyz" ne nomment pas de type. P> code d'exemple: p>
dans votre Aucune idée pourquoi échanger les deux autour ferait une différence, mais cela m'a fait pour moi. P> abc.cpp code> Assurez-vous d'inclure
xyz.h code> avant y compris
abc.h code>. p>.
Deux possibilités se produisent pour moi:
1. Vous avez peut-être une fente au lieu de signaler dans un appel de connexion ().
2. Parfois, il aide à modifier gratuitement le fichier .pro (par exemple, insert et supprimer un espace), de sorte que QMake est exécuté et que les fichiers .MOC sont générés. p>
Dans un projet de QT récent, où je venais d'installer le plus récent Qt (3/2011), j'ai guéri les trois d'entre eux qui arrêtaient ma construction en ajoutant ceci ... Je ne sais pas pourquoi ils distribueraient quelque chose qui avait de tels problèmes, peut-être dans d'autres types de systèmes.h est inclus dans quelque chose d'autre, mais pas dans mon cas, de toute façon. Espère que cela aide quelqu'un. P> p>
Je viens d'avoir ce problème et j'aime Arckaroph Strong> a dit:
Le problème est que lorsque nous incluons un fichier d'en-tête dans un fichier de code source et que nous en utilisons la directive #IfnDef, nous ne pouvons plus l'inclure dans un fichier d'en-tête pour donner un type de classe incluse à une variable de source Fichier de code P>
Exemple: P>
classe1.h contient la classe1
classe2.h contient la classe2
La classe2 a une variable privée V avec type de classe1
Si nous incluons la classe1.h en classe2. CPP em> strong> Nous ne pouvons pas l'inclure dans la classe2.h de donner V un type de classe1. P>
donc nous mettons dans la classe2.cpps class2.h avant la classe1.h
ou nous supprimons la classe1.h de class2.cpp p>
J'ai trouvé ce problème sur QtCreator 3.4.1 et Qt 5.4, lorsque je remplace telle que avec p> Ce problème parti. p> p>
Dans mon cas, je n'utilisais pas l'espace de noms que la classe a été définie. Les contenus de l'en-tête ont été contenus dans l'espace de noms, mais le fichier source manquait le à l'aide de la directive code> directive.
.h code>: p>
.cpp code>: p>
J'ai trouvé une solution pour moi-même.
Dis que j'ai la classe A et la classe B.
"A.H" comprend "B.H" et a une instance de B en tant que membre.
"B.H" comprend "A.H" et a une instance d'un membre.
Compiler me donne une erreur dans "BH" sur la ligne de code où membre de la classe A est déclaré: ce que je fais est dans "ah" je supprimais #include "bh" et placez # Inclure "BH" à "A.CPP". Et avant une déclaration de classe, j'écris la classe B; p> a travaillé pour moi, bonne chance! P> p> P>
Pouvez-vous nous montrer la ligne qui provoque l'erreur?
Ressemble à un bogue dans QT Creator. C'est toujours là en 2.01. Mon programme compile et fonctionne bien, mais je reçois un tas d'avertissements de types apparemment aléatoires. Même certains types QT (comme QScriptValue).