[noob] vector<struct> problem



  • meinstruct s = { "text", true };
    v.push_back(s);
    

    Oder den Konstruktor entsprechend überladen:

    struct meinstruct
    {
      meinstruct(string t, bool f) : text(t), flag(f) {};
      ...
    };
    
    v.push_back(meinstruct("text", true));
    


  • warum posten 1000 leute falschen code ? übertreibt
    Aber was richtiges hab ich noch net gesehen ...

    typedef struct
    {   std::string mystring;
        bool myflag;
    } meinstruct;
    

    so wär der typ schon besser oder ?



  • danke fuer die schnelle antwort 🙂

    haette ich auch selber drauf kommen koennen sorry ...



  • 1ntrud0r schrieb:

    so wär der typ schon besser oder ?

    nö, so musst du's in C machen.

    (und der Konstruktor fehlt auch immer noch)



  • DrGreenthumb schrieb:

    1ntrud0r schrieb:

    so wär der typ schon besser oder ?

    nö, so musst du's in C machen.

    (und der Konstruktor fehlt auch immer noch)

    würd ich gern mal quellen dazu haben ..



  • ein struct ist in C++ nix weiter als 'ne Klasse mit public.



  • DrGreenthumb schrieb:

    ein struct ist in C++ nix weiter als 'ne Klasse mit public.

    ich meinte quellen zu deiner behauptung keine erklärungen die nichts zur sache tun ...



  • Die Erklärung tut was zur Sache, oder hast du schonmal

    typedef class
    {
    ..
    } MyClass;

    gesehen?

    Guck halt in ein x-beliebiges C++ Buch.



  • DrGreenthumb schrieb:

    Die Erklärung tut was zur Sache, oder hast du schonmal

    typedef class
    {
    ..
    } MyClass;

    gesehen?

    Guck halt in ein x-beliebiges C++ Buch.

    es ging aber um structs nicht um klassen
    mein compiler mosert bei deiner lösung bei meiner nicht komisch nicht oder ?
    zwar nur warnungen aber ist ja egal 😉



  • 1ntrud0r schrieb:

    es ging aber um structs nicht um klassen

    Ja, der Witz ist, structs *sind* Klassen. Das wollt ich mit meinem Post aussagen.

    mein compiler mosert bei deiner lösung bei meiner nicht komisch nicht oder ?
    zwar nur warnungen aber ist ja egal 😉

    Naja, dein Compiler ist kaputt.



  • DrGreenthumb hat trotzdem Recht. In C++ werden structs folgendermaßen erstellt:

    struct myStruct{};
    

    Und dass structs eigentlich Klassen sind, tut eben deswegen zur Sache, weil sie auf die gleiche Art und Weise erstellt werden.



  • ich weiss eigentlich nicht was ihr gegen mein typedef struct {} habt 🙂

    typedef class
    {
    ..
    } MyClass;

    gesehen?

    sowas ähnliches seh ich hier ..
    http://gotw.ca/gotw/079.htm

    oh und was ist da ...
    zitat : Why use typedef? Besides the many traditional reasons, we'll consider typedef techniques that make using the C++ standard library safer and easier.
    quelle : http://gotw.ca/gotw/046.htm 😋

    DrGreenthumb hat trotzdem Recht. In C++ werden structs folgendermaßen erstellt:
    C/C++ Code:
    struct myStruct{};
    C/C++ Code:
    .
    Und dass structs eigentlich Klassen sind, tut eben deswegen zur Sache, weil sie auf die gleiche Art und Weise erstellt werden.

    das kann ich nur so stehen lassen ... fluxx du bist der gott 😃 😃

    z.T. Warnung ist folgendes hier : W8026 Funktionen Übernimmt als Argument Klassen per Wert werden nicht als Inline expandiert



  • 1ntrud0r schrieb:

    sowas ähnliches seh ich hier ..
    http://gotw.ca/gotw/079.htm

    oh und was ist da ...
    zitat : Why use typedef? Besides the many traditional reasons, we'll consider typedef techniques that make using the C++ standard library safer and easier.
    quelle : http://gotw.ca/gotw/046.htm 😋

    Hat nur garnix mit dem hier zu tun.



  • DrGreenthumb schrieb:

    1ntrud0r schrieb:

    sowas ähnliches seh ich hier ..
    http://gotw.ca/gotw/079.htm

    oh und was ist da ...
    zitat : Why use typedef? Besides the many traditional reasons, we'll consider typedef techniques that make using the C++ standard library safer and easier.
    quelle : http://gotw.ca/gotw/046.htm 😋

    Hat nur garnix mit dem hier zu tun.

    aber mit deiner frage.. ob ich sowas schonmal gesehen hab !!!!!!!!!! 🙄 🙄 🙄 der rest ist selbsterklären in meinem post ...

    wenn du keine antwort haben willst dann frag in zukunft nicht mehr ...



  • 1ntrud0r schrieb:

    typedef class
    {
    ..
    } MyClass;

    gesehen?

    sowas ähnliches seh ich hier ..
    http://gotw.ca/gotw/079.htm

    Ich nicht.



  • 1ntrud0r schrieb:

    aber mit deiner frage.. ob ich sowas schonmal gesehen hab !!!!!!!!!! 🙄 🙄 🙄 der rest ist selbsterklären in meinem post ...

    Dann zitier mal wo du das siehst :p



  • DrGreenthumb schrieb:

    Dann zitier mal wo du das siehst :p

    Die Klassendeklaration ist weiter oben das kannst dir hoffentlich denken ..
    Hier nen schönes template typedef .)

    template<class T>
    struct Registry
    {
    typedef std::map<std::string, T> Type;
    };



  • mir scheint du bist der syntax nicht ganz mächtig.



  • DrGreenthumb schrieb:

    mir scheint du bist der syntax nicht ganz mächtig.

    hmm eigentlich schon ... Du solltest halt manchmal vielleicht ein bisschen mehr kombinieren ... die folge -> lesen -> denken -> lesen -> denken -> schreiben solltest du dir eventuell angewöhnen ..

    ne map mit | nem std::string , und ner klasse t werden als typ type bekannt gemacht ... ist doch ne sinnige verwendung von typedef mit klassen und andren typen ..

    es ging in dem ganzen post nur darum das typedef struct {} irgendnentyp; keine fehlermeldungen gebracht hat und deine ausführungen fehler/warnungen gebracht haben ..



  • 1ntrud0r schrieb:

    Du solltest halt manchmal vielleicht ein bisschen mehr kombinieren ... die folge -> lesen -> denken -> lesen -> denken -> schreiben solltest du dir eventuell angewöhnen ..

    Glashaus, Steine.

    DrGreenthumb hat gefragt, ob Du schonmal Quelltext wie

    typedef class {
      /* ... */
    } Foo;
    

    gesehen hast (Dieser Quelltext ist übrigens einwandfrei in Ordnung). Du hast ein Beispiel gebracht, in dem ein 'typedef' vorkam. Zusammenhang?

    Die Ursprungsbehauptung deinerseits, es gäbe einen Unterschied zwischen »struct Foo {};« und »typedef struct {} Foo;«, ist übrigens unwahr. Es gibt, abgesehen von Rückwärtskompatibilität zu C keine Gründe die zweite Schreibweise vorzuziehen. Sie trägt nur zur Verwirrung bei, wie man an diesem Thread sehen kann, nicht?


Anmelden zum Antworten