struct in anderer datei
-
Ich habe in einer Datei, sagen wir struct.cpp, folgendes geschrieben:
struct xyz { string a; string b; };
wenn ich jetzt in main.cpp folgendes schreib:
struct xyz; vector<xyz> v; int main() { xyz a; a.a=("asjg"); a.b=("lödg"); v.push_back(a); v[0].a=("jhsf"); };
bekomm ich beim syntax überprüfen nicht nur einen Haufen warnungen die sich auf die makefile beziehen, sondern auch ein paar sachen à là:
48 C:\Dokumente und Einstellungen\TOM\Eigene Dateien\c++\Projekte\Telefonbuch\absp.cpp invalid use of undefined type `struct eintragung'
-
Du musst die struktur auch einbinden aus deiner main Datei, dafür brauchst du eine zugehörige Header Datei! Das ganze sieht dann ungefähr so aus:
//xyz.h #include <string> struct xyz { std::string a; std::string b; }; //main.cpp #include <vector> using namespace std; vector<xyz> v; int main() { xyz a; a.a=("asjg"); a.b=("lödg"); v.push_back(a); v[0].a=("jhsf"); };
Ungetestet, sollte aber klappen.
-
Bei mir gibt es keinen Compiler Error.
Hast du alles wesentliche gepostet?
Das läuft bei mir:#include <string> #include <vector> struct xyz { std::string a; std::string b; }; int main() { std::vector<xyz> vec; xyz a; a.a = "1"; a.b = "2"; vec.push_back(a); vec[0].a = "3"; }
Edit: ok, habe net gsehen, dass es in einer anderen Datei implementiert ist
Bei KPC fehlt noch das #include "xyz.h"
-
OK Leute, erst mal danke für die hilfe, hat die errors von 256 auf
37 C:\DOKUME~1\TOM\EIGENE~1\C__~1\Projekte\TELEFO~1\Makefile.win [Warning] overriding commands for target `"../../../../../../Dokumente' 34 C:\DOKUME~1\TOM\EIGENE~1\C__~1\Projekte\TELEFO~1\Makefile.win [Warning] ignoring old commands for target `"../../../../../../Dokumente' 37 C:\DOKUME~1\TOM\EIGENE~1\C__~1\Projekte\TELEFO~1\Makefile.win [Warning] overriding commands for target `und'
verringert!
Ich weiß, das sind nur Warnungen, aber die sollte man ja auch nicht ignorieren... Also was will mir der kompiler damit sagen?
Ich denke mal, das liegt daran, das ich xyz.h mehrmals (in versch. Dateien) inkludiere...
-
ness schrieb:
OK Leute, erst mal danke für die hilfe, hat die errors von 256 auf
37 C:\DOKUME~1\TOM\EIGENE~1\C__~1\Projekte\TELEFO~1\Makefile.win [Warning] overriding commands for target `"../../../../../../Dokumente' 34 C:\DOKUME~1\TOM\EIGENE~1\C__~1\Projekte\TELEFO~1\Makefile.win [Warning] ignoring old commands for target `"../../../../../../Dokumente' 37 C:\DOKUME~1\TOM\EIGENE~1\C__~1\Projekte\TELEFO~1\Makefile.win [Warning] overriding commands for target `und'
verringert!
Ich weiß, das sind nur Warnungen, aber die sollte man ja auch nicht ignorieren... Also was will mir der kompiler damit sagen?
Ich denke mal, das liegt daran, das ich xyz.h mehrmals (in versch. Dateien) inkludiere...Wenn es wirklich daran liegt, kannst du dieses Problem mit Hilfe von "Include Guards" lösen.
Beispiel:#ifndef _klasse #define _klasse // Klassen Definiton #endif
-
Ich habe einen "include guard" Woran könnte es noch liegen? (Das war nur meine vermutung beim lesen der Fehler...)
-
Hat jemand eine Idee?