Falsche Fehlermeldung von Turbo C++
-
Moin, moin!
Hab' gerade 300 Zeilen am Stück gecoded (ich weiß, man sollte in küzeren Abständen testen, aber der Code war auf Papier geplant...) und jetzt wirft mir Turbo C++ die meiner Meinung nach völlig unpassende Fehlermeldung[C++ Fehler] 3dobjects2.h(2468): E2451 Undefiniertes Symbol 'SVertex3f'
an den Kopf. Und zwar in folgender Zeile:
void TestVisibilityOfOctTreeNode(SVertex3f* v, C3D_World* World, C3D_OctTreeNode* 8TNode)Danach folgt die Definition der Methode, ich hab' also auch kein Semikolon vergessen. SVertex3f ist sehr wohl deklariert und definiert:
struct SVertex3f { float x; float y; float z; };Das Seltsame ist, dass der Compiler die Unbekanntheit des Typs nur an dieser einen Stelle bemängelt. In einer anderen Zeile zeigt er einen ähnlichen Fehler an, ("Fehler in der Deklarationssyntax", auch ein dyn. Array, aber nicht als Parameter) nur mit einer anderen struct. Den hatte ich allerdings schonmal zusammen mit _wirklichen_ Fehlern und als ich die wirklichen beseitigt hatte, war er auch weg.
Deshalb vermute ich, dass der eigentliche Fehler woanders liegt, aber ich kann ihn nicht finden. Vielleicht hat ja jemand von Euch 'ne Idee/Erfahrung, wie man solche falschen Fehler provozieren kann.
Vielen Dank schonmal im Voraus
Mr Train
-
Das muss zuvor definiert (oder in deinem Fall reicht deklariert) sein.
class SVertex3f; ... void TestVisibilityOfOctTreeNode(SVertex3f* v, C3D_World* World, C3D_OctTreeNode* 8TNode)
-
Ja, weiß ich. Es ist auch schon vorher deklariert und definiert (in einem anderen Header, der ganz am Anfang included wird). Ich habe in derselben Headerdatei, in der auch meine Fehlerfunktion steht haufenweise Hilfsfunktionen, die SVertex3f benutzen. Und keine einzige davon markiert der Compiler als falsch.
Aber trotzdem Danke, für den Hinweis

-
wenn SVertex3f vor der funktion TestVisibilityOfOctTreeNode deklariert ist liegt vermutlich irgendwo vorher ein syntaxfehler vor
den fehler kreist du ein indem du große teile deiner 300 zeilen code wieder auskommentierst (#if 0 ... #endif) und den rest durch den compiler jagst. mit der funktion TestVisibilityOfOctTreeNode und allem was damit zusammenhängt würde ich anfangen
-
Danke, Euch allen!
Ich hab den Fehler gefunden:
Vermutlich gegen die C++-Regeln habe ich eine Variable "8TNode" genannt. Das beginnt mit einer Zahl, was mir der Compiler offenbar sehr übel nimmt und mir nichtmal sagt, was wirklich falsch ist. 
Schönen Abend noch!

-
Mr Train schrieb:
... Vermutlich gegen die C++-Regeln habe ich eine Variable "8TNode" genannt....
Sogar ganz bestimmt.
Und wieder einmal liegt der Fehler beim Programmierer und nicht beim Compiler.

Vielleicht hätte der Compiler Dir etwas Anderes mitteilen können, aber für ihn ist eben erst bei der Zeichenkette "SVertex3f" die Suche nach einer Möglichkeit, dass Dein Code gültig ist, zuende. Das hat auch damit zu tun, dass in C++ mit nur wenigen Operatoren und keywords seeehr viele Konstrukte möglich sind (obwohl ich Dir sein Parsing in diesem Fall nicht erklären kann).
Der Klassiker zu sowas ist ja schon die Fehlermeldung vonmyClass a();Gruß,
Simon2.