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.





  • 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 field

    for i=0 to 100
    part.particle = New particle
    next

    for particle = each part
    live-=1
    x+=speed
    y+=speed
    next

    So 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);
    }
    

Anmelden zum Antworten