C ++ - Fehler: Die Member-Deklaration wurde nicht gefunden

8

Ich bin ein C ++ Neuling. Heute habe ich ein Problem: In Header-Datei definiere ich eine Klasse:

%Vor%

und in der Quelldatei programmiere ich als:

%Vor%

Bei der Kompilierung sagt der Compiler immer: ' Member deklaration nicht gefunden '. warum?

Ich benutze eclipse CDT + Cygwin GCC

vielen Dank!

    
wenfeng 13.01.2012, 08:31
quelle

3 Antworten

6

Template-Klassen müssen sowohl deklariert als auch in der Kopfzeile oder einer anderen Datei definiert sein, die von Benutzern eingeschlossen wird. Sie können nicht wie üblich in einer Kopfzeile deklariert und in einer Quelldatei definiert werden.

Der Grund dafür ist, dass die Vorlage durch einen tatsächlichen Typ und die Quelle ersetzt werden muss, die generiert und kompiliert wird, wenn sie verwendet wird, und der Compiler kann Vorlagen für jeden möglichen Typ, der mitkommt, nicht vorkompilieren kann damit umgehen (und muss auf den Code zugreifen können).

Dies verursacht einige Probleme beim Übergeben von Objekten, wenn mehrere Bibliotheken die gleichen Vorlagen enthalten, da sie mit verschiedenen Versionen des Headers kompiliert werden können (siehe die Eine Definitionsregel).

    
ssube 13.01.2012 08:37
quelle
1

"Elementdeklaration nicht gefunden" ist ein Fehler, der vom statischen Analysetool Eclipse ( codan ) erzeugt wird Compiler. Wenn Sie diesen Fehler erhalten, aber die Kompilierung erfolgreich ist, ist dies ein falscher positiver Befund. Es ist bekannt, dass ältere Versionen dieses Tools einige falsche Ergebnisse liefern, siehe zum Beispiel diesen Fehlerbericht . Daher empfehle ich, Eclipse CDT auf die neueste Version zu aktualisieren. Wenn dies nicht hilft, senden Sie einen Fehlerbericht an Eclipse CDT.

Wenn Sie jedoch auch die Fehler vom Compiler bekommen (diese werden durch C / C ++ - Problem in der Spalte Typ in der Ansicht Probleme angezeigt), dann haben Sie wahrscheinlich vergessen, die Header-Datei hinzuzufügen.

    
vitaut 20.03.2013 18:21
quelle
0

Sie sollten Ihre Quelldatei am Ende der Headerdatei einfügen oder Sie definieren die Elementfunktion in der Headerdatei, wenn Sie eine Vorlagenklasse definieren

    
benlong 13.01.2012 08:39
quelle

Tags und Links