unterschied struct und class

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • <span style="text-decoration:line-through">truct verwendet standardmäßig private statt public </span> und wird eigentlich nur zum sammeln von Variablen verwendet.
    In C dürfen structs außerdem keine Funktionen enthalten.

    Bin mir auch gar nicht sicher ob man structs überhaupt ableiten kann oder überhaupt Polymorphie bilden kann

    Aber für echte Objektorientierung ist class auf jeden Fall die bessere Wahl
    struct ist eher old school und wurde von C übernommen

    Achso: evtl. sind structs minimalst ressourcenschonendner (ohne gewähr)
  • Wie weit bist du denn schon in die OO eingestiegen?

    Sinn von Objektorientierung ist die Kapselung in Teilprobleme. Ein wichtiger Faktor ist das Geheimnisprinzip.
    So kann man Anwendern der Klasse Zugriff auf Methoden geben - ihnen aber den direkten Zugriff auf die Variablen untersagen.
    Der User soll gar nicht wissen, wie die einzelnen Methoden implementiert sind (das könnte sich bei einem Update wieder ändern)

    public/private sind selbsterklärend
    zudem gibt es noch protected, das zu tragen kommt, wenn du klassen ableitest

    hier ein bisschen Lesestoff
    http://de.wikibooks.org/wiki/C++-Programmierung:_Klassen
  • bis hierher hab ich alles kapiert. habe nur ein problem:

    wenn ich nur 2 spieler habe ist das so ok denk ich:

    Quellcode

    1. class C_Spieler
    2. {
    3. public:
    4. int Team;
    5. int Punkte;
    6. };
    7. C_Spieler sp1;
    8. C_Spieler sp2;
    9. sp1.Team=1;
    10. sp2.Team=2;
    11. cout << sp1.Team;
    12. cout << sp2.Team;
    Alles anzeigen


    aber wenn ich 200 oder mehr einheiten z.b. habe? so funktionierts nicht:

    Quellcode

    1. class C_Einheiten
    2. {
    3. public:
    4. int Angriff;
    5. int Verteidigung;
    6. };
    7. for(int t; t<200;t++){
    8. C_Einheiten einheit[t];
    9. einheit[t].Angriff=100;
    10. einheit[t].Verteidigung=150;
    11. };
    12. for(int z; z<200;z++){
    13. cout << einheit[z].Verteidigung; // <-- hier meldet er einen fehler:
    14. // 'einheit' undeclared (first use this funktion)
    15. };
    Alles anzeigen


    wie kann ich das lösen (mein compiler mag die eckigen klammern nicht.
    muss ich für jede einheit eine extra reihe schreiben?
  • dein compiler, egal wie alt er ist, wird bestimmt arrays unterstützen
    das problem ist, dass du innerhalb der schleife ein neues array der länge t erstellst und der name jedesmal identisch ist..

    erstelle das neue array mal vor der schleife

    Quellcode

    1. int max=200;
    2. C_Einheiten einheit[max];
    3. for(int i; i<200; i++){
    4. einheit[i].Angriff=100;
    5. einheit[i].Verteidigung=150;
    6. }
    7. for(int i; i<max; i++){
    8. cout << einheit[i].Verteidigung;
    9. }
    Alles anzeigen
  • mellow greetings y'all,

    ...struct ist eher old school und wurde von C übernommen...


    war c nicht vor c++?
    und hat sich nicht class aus struct "gebildet"? :wink:

    ...In C dürfen structs außerdem keine Funktionen enthalten...

    ... es gibt doch funktionspointer :wink: :D

    struct MyClass { int (*pDoIt) (int x); };
    int DoIt(int x) { return x; }

    int main( int iParam, char** cppParam )
    {
    struct MyClass stMyClass;
    stMyClass.pDoIt = DoIt;
    printf( "%i", stMyClass.pDoIt(299792) );

    return 0;
    }
  • struct verwendet standardmäßig private statt public


    mmmhh, kann es nicht sein, dass in einem struct eher alles public als private ist? :wink: ... da es sich ja bei einem struct um eine "variablen-sammlung" handelt ... warum sollte es dann private variablen geben?

    ach, und wie könnte man das eigentlich ändern (public <-> private):?: hast du n beispiel?