1Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
268
268
EMPFEHLEN
-
Hallo,
Wir schreiben ein Projekt in Cpp und haben derzeit einige Probleme.
Im Anhang befinden sich die Dateien eines stark reduzierten Beispielprojektes, welches den Fehler den wir haben sehr gut sichtbar macht.
Folgendes Problem:
Wir erzeugen in der Klasse SqlStruct eine Instanz von Select im Header
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
namespace sql{ class SqlStruct { public: sql::Select s; SqlStruct(void); SqlStruct(std::string statement); ~SqlStruct(void); bool accept(Visitor v); }; };
in der Cpp führen wir auf dieses Select eine Methode aus:
Code :1 2 3 4 5 6
sql::SqlStruct::SqlStruct(std::string statement) { s = sql::Select(); s.test(); std::cout << "please instert SQL Expression:" << std::endl << std::endl; }
das funktioniert nun...
Wenn wir aber in der Klasse Select nun eine Änderung z.B. in der Methode die ausgeführt wird vornehmen dann bekommen wir einige Fehler. Wenn wir diese Änderungen nun rückgängig machen und dann kompilieren und ausführen erhalten wir aber die selben Fehler. Erst wenn wir die definition von Select im Sqlstruct auskommentieren, kompilieren und wieder mit reinnehmen und dann kompilieren gehts wieder...
Wir sind ratlos und hoffen auf eure Hilfe...
Ps: getestet in VS2010_Sp1 und bloodshed alle Dateien auch im Anhang
-
Was für Fehler bekommt ihr denn?
-
Stimmt, das wäre noch praktisch:
Code :1 2 3 4 5
Fehler 2 error C2039: 'Select': Ist kein Element von 'sql' ...\sqlstruct.hpp 16 Fehler 3 error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 's' ...\sqlstruct.hpp 16 Fehler 4 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. ...\sqlstruct.hpp 16 Fehler 5 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. ...\sqlstruct.hpp 16 6 IntelliSense: "namespace "sql"" hat keinen Member ""Select"". ...\sqlstruct.hpp 16
Zeile 16 entspricht:
Code :1
sql::Select s;
-
Vermutlich kommt der Compiler mit den Namespaces durcheinander, weil du dir selbst einen mit Namen sql definierst und gleichzeitig einen anderen verwendest in dem z.B.: das Select drin ist. Die Fehlermeldungen bedeuten einfach nur das der Typ sql:Select nicht aufgelöst werden kann.
-
Welche Lösung schlägst du vor?
-
Hab grad versucht mit deinen Code Dateien ein funktionierendes Programm zu bauen. Das mit den Namespaces war nur halb richtig, das eigentliche Problem ist wie du mit den zyklischen Abhängigkeiten umgehst:
Du darfst wenn du in einer Datei (z.B.: SqlStruct.hpp) einen Prototyp anlegst nicht auch das zugehörige Headerfile inkludieren, sondern must dies in der cpp Datei machen:
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/* SqlStruct.hpp */ #pragma once #include <string> #include <iostream> //Diese Zeile muss hier weg... //#include "Visitor.hpp" #include "Select.hpp" class Visitor; namespace sql{ class SqlStruct { public: sql::Select s; SqlStruct(void); SqlStruct(std::string statement); ~SqlStruct(void); bool accept(Visitor v); }; };
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/* SqlStruct.cpp */ #include "SqlStruct.hpp" //... dafür muss es da her #include "Visitor.hpp" sql::SqlStruct::SqlStruct(void) { } sql::SqlStruct::SqlStruct(std::string statement) { s = sql::Select(); s.test(); std::cout << "please instert SQL Expression:" << std::endl << std::endl; } sql::SqlStruct::~SqlStruct(void) { } bool sql::SqlStruct::accept(Visitor v) { return false; }
Selbiges gilt auch für die Select.hpp und Select.cpp.
Zweitens gehört in der Visitor.hpp definitiv kein Prototyp für die SqlStruct Klasse hin.
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#pragma once #include <string> #include <iostream> #include "Sqlstruct.hpp" //Weg damit, da zyklische Abhängigkeiten nur an einer Stelle gelöst werden sollten /*namespace sql{ class SqlStruct; };*/ class Visitor { public: Visitor(void); ~Visitor(void); bool visit(sql::SqlStruct sql_Structure); };
-
Vielen Dank für die schnelle und kompetente Hilfestellung
Ähnliche Themen
-
Tabellen – ein Mysterium?
Von localex im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 31.10.07, 12:03 -
Green Mysterium
Von burnobaby im Forum Bildbearbeitung & IllustrationAntworten: 3Letzter Beitrag: 30.07.06, 11:08 -
Mysterium Flash Player 8
Von wavetraxx im Forum Flash PlattformAntworten: 5Letzter Beitrag: 28.03.06, 11:15 -
Das Xerox Mysterium
Von reBourne im Forum SmalltalkAntworten: 2Letzter Beitrag: 08.04.05, 21:08 -
Mein Webserver: ein Mysterium ?
Von gothic ghost im Forum Hosting & WebserverAntworten: 6Letzter Beitrag: 15.04.04, 02:05





Zitieren
Login






