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-argumentmain()::name_struct' uses local
    type main()::name_struct' test_struct.cc:22: error: template argument 2 is invalid test\_struct.cc:22: error: ISO C++ forbids declaration ofv_name_text' with no
    type
    kerstin@linux:~/c++/programmfiles/felsenstein_pruning/AKTUELL> g++ test_struct.cc -o test_struct
    test_struct.cc: In function int main()': test_struct.cc:22: error: template-argumentmain()::namestruct' uses local
    type main()::namestruct' test_struct.cc:22: error: template argument 2 is invalid test\_struct.cc:22: error: ISO C++ forbids declaration ofv_name_text' with no
    type

    Als 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!


Anmelden zum Antworten