Qt Creator: "XYZ ist nicht der name ein geben"
Dies ist eine sehr frustrierende Fehlermeldung in der Qt Creator: ’XYZ’ does not name a type
. Dies bedeutet normalerweise, dass es einen Fehler in der Klasse XYZ
verhindert, dass der compiler generiert den Typ, aber es gibt keine weiteren Hinweise darauf, was falsch gelaufen ist.
Irgendwelche Vorschläge?
- Können Sie uns zeigen, die Zeile, die den Fehler verursacht?
- Sieht aus wie ein bug in Qt Creator. Es gibt Sie noch in 2.01. Mein Programm kompiliert und läuft auch gut, aber ich bekomme einen Haufen Warnmeldungen von scheinbar zufälligen Typen. Auch einige Qt-Typen (wie QScriptValue).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich dieses problem auf qtcreator 3.4.1 und QT 5.4, wenn ich ersetzen wie
mit
dieses problem verschwunden.
ich hatte gerade dieses problem, und wie Arckaroph gesagt haben :
das problem ist, dass, wenn wir eine header-Datei, die in eine source-code-Datei, und wir verwenden es in der Direktive #ifndef, können wir nicht wieder in eine header Datei zu geben, ein Typ der es enthalten ist die Klasse auf eine variable im source-code-Datei
Beispiel :
class1.h enthält Class1
class2.h enthält Class2
class2 haben eine private variable V mit class1-Typ
wenn wir class1.h class2.CPP wir können nicht zählen, es wird in class2.h zu geben, V class1 geben.
so setzen wir in class2.cpp class2.h vor class1.h
oder wir löschen Sie class1.h aus class2.cpp
In Ihrem
abc.cpp
stellen Sie sicher, dass Siexyz.h
vor, einschließlichabc.h
.Keine Ahnung, warum tauschen die beiden herum würde einen Unterschied machen, aber es hat für mich.
Kriegt man die Fehlermeldung vom compiler oder der IDE (als a squiggly underline)? Ich habe festgestellt das in der Qt Creator 1.2.9 und ich denke es ist ein bug in der IDE.
Ich glaube, Sie erklären etwas vom Typ XYZ wie
Das problem ist XYZ ist noch nicht definiert.
Folgendes ist mein problem und mein Fazit. Was denkst du?
Mein problem ist, ich habe ein Klasse ABC und eine Klasse XYZ. Klasse ABC hat ein Mitglied, das erklärt wird als XYZ-Typ. Klasse XYZ hat ein Mitglied, das erklärt, wie ein Typ ABC. Der compiler weiß nicht, was der Typ XYZ ist doch, weil es nicht definiert hat es noch nicht. Daher der Fehler gegeben ist 'XYZ' ist nicht name eines Typs.
Beispiel-Code:
kürzlich in einem QT-Projekt, wo hatte ich nur installiert die neueste QT (3/2011), ich geheilt, die drei von Ihnen das stoppte meine bauen, indem diese...
...vor dem include der header-Datei, warf Sie den Fehler. Das war es.
Ich weiß nicht, warum Sie verteilen würde, etwas, das solche Probleme hatte, vielleicht in anderen Systemen-Typen.h enthalten ist etwas anderes, aber nicht in meinem Fall, sowieso. Hoffe, dass jemand hilft.
Nicht #include ' Ing der entsprechenden header-Datei helfen?
Wenn Sie Vorlagen verwenden, dann müssen Sie vor den Namen der Klasse mit "typename", damit der compiler erkennen kann es als eine Art...
Zwei Möglichkeiten fallen mir ein:
1. Vielleicht haben Sie SLOT anstelle des SIGNALS in einer connect () - Aufruf.
2. Manchmal hilft es, ein kostenloses "Bearbeiten".PRO Datei (z.B. löschen und einfügen von einem Leerzeichen), so dass QMake ausführen, ruft und die .moc-Dateien generiert.
In meinem Fall war ich nicht mit dem Namensraum der Klasse definiert wurde. Inhalt der Kopfzeile enthalten waren innerhalb des namespace, aber der Quell-Datei fehlt die
using namespace
Richtlinie..h
:.cpp
:Fand ich eine Lösung für mich.
Sagen, ich habe Klasse A und Klasse B.
"A. h" enthält "B. h" und ist Instanz von B als Mitglied.
"B. h" enthält "a-h" und ist Instanz von A als Mitglied.
Compiler gibt mir eine Fehlermeldung in der "B. h" auf Linie der code, wo die member der Klasse A deklariert ist:
Was ich Tue, ist in "a-h" Entferne ich #include "B. h" und #include "B. h" zu "A.cpp". Und vor der Deklaration Einer Klasse, die ich schreiben, Klasse B;
Arbeitete für mich, viel Glück!