Types wie in Blitzbasic
-
Hi,
habe gerade mit C++ angefangen, und vorher in Blitzbasic programmiert.
Jetzt vermisse ich in C++ jedoch sowas wie die Types, die es in Blitzbasic gab.
Ich habe versucht die Types in C++ mit Listen zu ersetzten, was jedoch viel aufwendiger ist. Gibt es in C++ vieleicht auch so etwas wie Types?Da ich nicht weis, wie ich das mit den Types erklären soll, hoffe ich, dass jemand antwortet, der Blitzbasic kennt.
cu
-
In einen std::vector kann man auch beliebig dinge anhängen. Ebenso mit der list, der queue, dem stack, der map ... Wo ist das Problem?
Gruß Tobias
-
Gibt es in C++ vieleicht auch so etwas wie Types?
Es wäre äußerst hilfreich, wenn du erklären könntest, was genau Types sind und was sie auszeichnet.
-
http://cplus.kompf.de/artikel/container.html vielleicht hilf das
-
In Blitzbasic habe ich types immer dann verwendet, wenn ich objekte verwalten wollte, derren anzahl sich ständig verändert. Also z.B. bei Schüssen, Partikeln.
field particle
x
y
speed
live
end fieldfor i=0 to 100
part.particle = New particle
nextfor particle = each part
live-=1
x+=speed
y+=speed
nextSo ungefähr sah das in Blitzbasic aus. Man konnt also unendlich viele part vom objekt partikel erstellen. In c++ geht das jedoch mit strukturen nicht so, oder. Da muss ich dass dann ja so machen: particle part[100]; und kann deswegen ja nicht plötzlich 120 parts erstellen oder ?
cu
-
Natürlich kann man so etwas auch in C++. Lies doch mal etwas über die Container der
STL <vector> <list> <map> <queue> <dequeue> ...
-
struct Particle { int x, y; int speed ; int live; }; list<Particle> part; for (int i=0; i<100; ++i) part.push_back(Particle()); for (list::iterator it = part.begin; it != part.end(); ++it) { it->live -= 1; it->x += it->speed; it->y += it->speed; }
In etwa sowas?
-
Genau das habe ich gemeint. So wenn live jetzt auf 100 ist, will ich, dass der particle gelöscht wird. Kann ich das dann so machen ?
if(live > 99) { part.pop_back(Particle()); }
cu
-
Seed schrieb:
Genau das habe ich gemeint. So wenn live jetzt auf 100 ist, will ich, dass der particle gelöscht wird. Kann ich das dann so machen ?
if(live > 99) { part.pop_back(Particle()); }
Ne. pop_back erwartet keine Parameter. Wenn dann also:
part.pop_back()Das entfernt das letzte Element aus der Liste. Ob das nun das ist, was du machen willst, kann ich aus deiner Frage nicht entnehmen.
-
for (list::iterator it = part.begin; it != part.end(); ++it) { if (it->live > 100) part.erase(it); }