class oder stuct



  • Ich habe mir angewöhnt solche reinen Datensammlungen als struct zu zu verwenden.



  • Wenn es keine Methoden gibt, würde ich es als struct machen. Ist schöner, weil du dann das public weg lassen kannst. Technisch machts keinen Unterschied.



  • Was für ne Semantik steckt denn hinter der Klasse bzw. welcher Zusammenhang zwischen den einzelnen Attributen?
    Ich persönlich würde daraus - so wie es jetzt dasteht - wohl eher eine Klasse mit entsprechenden Zugriffsmethoden machen, da man so z.B. das Array wegkapseln kann (kann ja sein, dass das später z.B. mal ne andere Datenstruktur sein soll).



  • Bei der Art "Ein Paar Klammern um einen Haufen Daten" wie du es oben dargestellt hast wuerd ich auch struct benutzen. Wenns dagegen um echte Kapselung von Zustaenden und die Daten nur das Mittel sind, diese Zustanede zu repraesentieren, dann tendiere ich eher zu class (bei der dann alle Membervariablen private sein sollten). Ist aber wie oben schon gesagt wurde reine Geschmackssache und unterscheidet sich technisch nur durch das public/private



  • danke,
    da es wirklich nur ein paar daten sind und vermutlich auch bleiben wird, reichts ein struct vollkommmen.
    Mal noch eine kleine verstaendnisfrage:

    class RecordClass {
    
    public:
    	RecordClass(){
    	rpm = -1;
    	peakmin = 1;
    	peakmax = -1;
    	averagevalue = 0;
    	obejct[5];
    	}
    
    	void blub (void);
    
    	char timestamp[8];	//hh:mm:ss
    	int rpm;
    	int peakmin;
    	int peakmax;
    	int averagevalue;
    	int obejct[5];
    };
    

    Der Konstruktor mit dem ich meine Variablen initialisieren wuerde jetzt erst ausgefuehert werden, sobald ich "blub" ausfuehre?
    gibt es auch eine andere moeglichkeit meine variablen zu initialisieren?



  • sash schrieb:

    Der Konstruktor mit dem ich meine Variablen initialisieren wuerde jetzt erst ausgefuehert werden, sobald ich "blub" ausfuehre?
    gibt es auch eine andere moeglichkeit meine variablen zu initialisieren?

    der Konstruktor (und damit deine initalisierung) wird ausgeführt, sobald du ein Objekt der Instanz erzeugst.
    Andere Möglichkeiten wären eine Initalisierungsliste, entsprechende set-Methoden oder ein Aufruf einer init-Funktion, die entsprechende Initialisierungen vornimmt...



  • Ich würde im Konstruktor eine Initialisierungsliste nehmen. Das hier obejct[5]; ist sinnfrei. das kannst du weglassen.
    Sollte obejct nicht besser object heißen. 🙂

    RecordClass() : rpm(-1), peakmin(1), peakmax(-1), averagevalue(0)
    { }
    


  • Das hier obejct[5]; ist sinnfrei

    war das nur auf meinen schreibfehler bezogen^^
    kann ich mein array so auch initialisieren?



  • Mit der Zeile initialisierst du nichts. Du weist ja deinem Array nichts zu. Arrays kann man in der Initialisierungsliste nicht initialisieren. Das musst du dann im Körper des Konstruktors machen. Du kannst dein Array auch durch einen vector erstetzen. Den kannst du dann wieder in die Initialisierungsliste packen.



  • ok, stimmt. thx


Anmelden zum Antworten