Error: C3646 Unbekannter Überschreibungsspezifizierer
-
Also,
Ich sitze grade an einem eigenen Musikplayer in der Consol, und bekomme die ganze Zeit folgende Fehlermeldungen:selectmusic.h(13): error C3646: "txt": Unbekannter Überschreibungsspezifizierer selectmusic.h(14): error C3646: "opt": Unbekannter Überschreibungsspezifizierer
Der Header sieht bisher so aus:
#pragma once #include <SFML\Audio.hpp> #include "Texter.h" #include "options.h" #include "b_dMusic.h" class selectMusic { private: //Variables sf::Music music; Texter txt; options opt; std::string Choice = ""; float fChoice; public: //Con/Destructor selectMusic(); virtual ~selectMusic(); //Functions void Select(); void NowPlaying(); };
Texter.h und options.h habe ich auch in andere Klassen integriert, dort kommt aber keine Fehlermeldung, obwohl der Code genau gleich aussieht:
#pragma once #include <SFML\Audio.hpp> #include "Texter.h" #include "options.h" #include "b_dMusic.h" #include "selectMusic.h" class menu { private: //Variables b_dMusic b_d; selectMusic sm; Texter txt; std::string Choice = ""; float fChoice; //Functions void MainMenu(); public: //Con/Destructor menu(); virtual ~menu(); //Functions int loop(); };
Ich habe schon nach Lösungen gesucht, aber bisher nichts gefunden was mir weiter geholfen hat.
Hat jemand von euch eine Idee?
-
Ohne die genaue Definition von
Texter
und/oderoptions
kann man da nicht viel sagen. Aus irgendeinem Grund erwartet der Compiler an dieser Position einen Override specifier, das ist in C++ z.B. dasoverride
in voidvoid f() override;
. Das ist an dieser Stelle so abstrus, da muss mindestens anTexter
irgendwas oberfaul sein.
-
@brain_damage-exe Mögliche Ursachen:
- zwei Includes includieren sich gegenseitig.
- irgendwo eine geschweifte Klammer vergessen.
Lass das ganze mal durch den Precompiler verarbeiten und schau Dir dessen Ergebniss an.
-
@mgaeckler Danke, das hat wirklich geholfen.
Ich hatte in options.h zu viel included was ich nicht brauchte, weil ich einfach die anderen includes kopiert habe.
Typischer Anfängerfehler, glaub ich mal.
-
Ja, genau - nur das Einbinden ("includen"), was auch wirklich benötigt wird.
Bei Referenzen und Zeigern reichen auch Vorwärtsdeklarationen (forward declarations).PS: Das Stichwort zum Fehler heißt "cross include".