Planung von Vektorelementen
-
Danke, das hilft mir weiter, ich werds dann wohl mit structs machen.

-
Machado schrieb:
Danke, das hilft mir weiter, ich werds dann wohl mit structs machen.

Machado schrieb:
Diese beiden ints sollen veraenderbar sein (inkrement/dekrement) und abrufbar, die strings nicht.
Diese beiden Assagen passen nicht zusammen denn bei structs sind alle felder public. Würde sagen eine Klasse mit public ints und private ( protected ) string würde besser passen.
Kurt
-
ZuK schrieb:
Diese beiden Assagen passen nicht zusammen denn bei structs sind alle felder public. Würde sagen eine Klasse mit public ints und private ( protected ) string würde besser passen.
Kurtalle felder sind _per default_ public. das ist ein unterschied.
und memberfunktionen können structs auch haben
-
Also eine richtige Klasse zu machen nur um 4 Werte zu speichern, von denen 2 nur Lesezugriff haben sollen, ist wohl übertrieben.
Kommt halt wirklich drauf an was er damit machen will. Wie schon gesagt, wenn man da ein logisches Konzept draus machen kann, kann man ne Klasse machen mit allem drum und dran ... man muss aber net mit Kanonen auf Spatzen schießen

-
Pellaeon schrieb:
Also eine richtige Klasse zu machen nur um 4 Werte zu speichern, von denen 2 nur Lesezugriff haben sollen, ist wohl übertrieben.
Kommt halt wirklich drauf an was er damit machen will. Wie schon gesagt, wenn man da ein logisches Konzept draus machen kann, kann man ne Klasse machen mit allem drum und dran ... man muss aber net mit Kanonen auf Spatzen schießen

Klassen und Structs sind in C++ speichertechnisch das gleiche! Da ist nix mit Kanonen auf Spatzen schießen. Wir haben hier nicht C#, dass Klassen nur auf dem Heap angelegt werden können. In C++ können sowohl Klassen als auch Structs sowohl auf dem Stack als auch auf dem Heap angelegt werden. Der einzige Unterschied ist der, den Doe schon angedeutet hat.
-
alle felder sind _per default_ public. das ist ein unterschied.
und memberfunktionen können structs auch haben
public, private, hin oder her.. Ich dachte an const?! Bloede Frage, kann ich keine zwei const string Objekte erstellen pro struct? Dann waeren doch automatisch nur die ints veraenderbar.
Ob DAS aber dann private oder public erfolgt, wollte ich halt mit der Frage nach struct oder class eigentlich (auch) herausfinden - sry war bescheuert formuliert von mir

-
natürlich kannst du das.
Musst sie dann nur über den Konstruktor initialisieren.
-
struct VectorFuellung { const std::string ersterString; const std::string zweiterString; int einInt; int nochEinInt; VectorFuellung(std::string s1, std::string s2, int i1, int i2) : ersterString(s2), zweiterString(s2), einInt(i1), nochEinInt(i2) }; main() { std::vector<VectorFuellung> vfvec; for (int i = 1; i < 13; i++) { //hiernach sind die Strings nichtmehr veränderbar: VectorFuellung vf("foo", "bar", 10*i, 1+i); vfvec.push_back(vf); } //aber man kann noch direkt drauf zugreifen: for (std::vector<VectorFuellung>::iterator i = vfvec.begin(); i != vfvec.end(); i++) stc::cout << i->ersterString << " " << i->zweiterString << " " << i->einInt << " " << i->nochEinInt << " " << std::endl; }
-
Ich weis das ne Struktur ne spezielle Klasse ist, aber trotzdem setzt man Strukturen ja eher ein, wenn es mehr ein Datenverbund sein soll(wie das record in Pascal halt). Is aber wohl ne Ansichstsache ...
VectorFuellung(const std::string &s1, const std::string &s2, int i1, int i2) : ersterString(s2), zweiterString(s2), einInt(i1), nochEinInt(i2) };Das würde ich da noch ändern.

-
klar, sry.