std::pair sinnvoll?
-
Super, danke.
Ich probiere es mal.
-
niemand schrieb:
struct Person { Person( string einVorname, string einNachname) : vorname( einVorname), nachname( einNachname) {}; string vorname; string nachname; } ; vector<struct Person> v; v.push_back( Person( "Gerhard", "Schröder")); v.push_back( Person( "Hans", "Wurst")); v[1].nachname = "Eichel";
ggf. empfiehlt sich noch ein typedef auf das struct. Sollte das struct mehr Methoden bekommen, lieber eine Klasse drausmachen. Wir akzeptieren hier bei uns nur Initalisierungs-Konstruktoren in structs, aber keine Methoden oder komplexere Konstruktoren.
Der typedef ist in C, jedoch nicht in C++ notwendig. In C++ funktioniert
vector<Person> v;
ganz so wie erhofft.
-
Hmm,
wenn ich dies eingebe:
std::vector<name_struct> v;
bekomme ich folgenden Fehler...
error: template-argument
Was mache ich denn da falsch?
-
Ist ohne weitere Infos schwer zu erkennen (zumindest ohne den Compiler zu kennen).
Hast Du ein #include<vector> in Deiner Datei?Ansonsten poste mal ein minimales Beispiel bei dem dieser Fehler auftritt.
-
1. was hat deine überschrift mit deinem prob zu tun?
müsste heissen,
"bekomme vector dekleration nicht hin"
oder so
ist in dieser datei dein
name_struct
bekannt?
-
Ich habe es erst mal einfach nur übernommen wie vorgeschlagen,
wobei ich mich noch nicht wirklich mit der Struct-Definition auseinandergesetzt habe.
#>vecor> habe ich included.struct name_struct
{
name_struct( std::string einName, std::string einText)
: name(einName), text(einText) {};
std::string name;
std::string text;
} ;std::vector<name_struct> v_name_text;
-
Sorry, sehe da keinen Fehler. Bekomme das hier per Copy&Paste kompiliert.
Mal die genaue Fehlermeldung (alles, was der Compiler auswirft) posten und welcher Compiler ist das überhaupt?
-
Mein Code lautet:
#include <iostream> #include <string> #include <fstream> //fuer dataiI/O #include <iomanip> //fuer setw() #include <cstdlib> //für EXIT_FAILURE #include <vector> int main() { struct namestruct { namestruct( std::string einName, std::string einText) : name(einName), text(einText) {}; std::string name; std::string text; } ; std::vector<namestruct> v_name_text; }
Die Fehlermeldung lautet:
test_struct.cc: In function
int main()': test\_struct.cc:22: error: template-argument
main()::name_struct' uses local
typemain()::name_struct' test_struct.cc:22: error: template argument 2 is invalid test\_struct.cc:22: error: ISO C++ forbids declaration of
v_name_text' with no
type
kerstin@linux:~/c++/programmfiles/felsenstein_pruning/AKTUELL> g++ test_struct.cc -o test_struct
test_struct.cc: In functionint main()': test_struct.cc:22: error: template-argument
main()::namestruct' uses local
typemain()::namestruct' test_struct.cc:22: error: template argument 2 is invalid test\_struct.cc:22: error: ISO C++ forbids declaration of
v_name_text' with no
typeAls Compiler nutze ich
gcc version 3.3.4 (pre 3.3.5 20040809)
-
Die struct-Definition darf nicht in einer Funktion stehen.
#include <iostream> #include <string> #include <fstream> //fuer dataiI/O #include <iomanip> //fuer setw() #include <cstdlib> //für EXIT_FAILURE #include <vector> struct namestruct { namestruct( std::string einName, std::string einText) : name(einName), text(einText) {}; std::string name; std::string text; }; int main() { std::vector<namestruct> v_name_text; }
-
Ah so...
Ok, ich muß noch viel lernen...
Vielen Dank,
dann klappts bestmmt!