struct werte zuweisen



  • hi leutz,

    bin grad dabei umzusteigen von ada auf c++, hab da ne frage, hab ein struct gemacht:

    struct spielkarte{
    int oben;
    int rechts;
    int unten;
    int links;
    };

    wie kann ich jetzt auf einmal werte zuweisen geht des so in der art?
    spielkarte X;
    X={ 1,2,3,4}; ?

    cya ben



  • Moin!

    So geht das :

    spielkarte X;
    
    X.oben    = 1;
    X.rechts  = 2;
    X.unten   = 3;
    X.links   = 4;
    

    Über den '.' Operator bekommst du Zugriff auf Elemente von Objekten und somit auch auf Strukturen.



  • des weiss ich, mir gehts drum die alle auf einmal zuweisen zu können alla

    spielkarte[1]={1,2,3,4};

    wenn ich das ausserhalb einer funktion, also global mache gehts aber innerhalb geht es nicht weiss einer wieso?



  • ben12345 schrieb:

    wenn ich das ausserhalb einer funktion, also global mache gehts aber innerhalb geht es nicht weiss einer wieso?

    Du kannst bei der Initialisierung werten zuweisen. z.B.:

    spielkarte t = {1, 2, 3, 4};
    

    oder du kannst ein Сonstructor benutzen:
    struct spielkarte {

    public:
     spielkarte (int voben, int vrechts, int vuntent, int vlinks):
    oben (voben), rechts (vrechts), untent (vunten), links (vlinks) {;}
    protected:
    int oben;
    int rechts;
    int unten;
    int links; 
    }
    

    dann kannst du schreiben:

    spielkarte r;
    r = spielkart (1, 2, 3, 4); // Vergiss es nicht ein copy constructor zu schreiben
    // wenn spielkart zeigern enthaelt!
    

    Dabei kannst du eine initialisierung funcktion benutzen.



  • Dabei im C99 und im GCC also du kannst immer schreben (nich nur bei der Initialisierung):

    struct speilkarte t;
    t = (struct spielkarte) {1, 2, 3, 4};
    


  • danke!

    ich hab des problem, dass ich 9 karten habe und diese eigentlich über einen array haben wollte, ich probiers mal mit nem konstruktor, obs damit geht...

    thx



  • enum typ {kvorne,khinten,rthinten,rtvorne,ovorne,ohinten,revorne,rehinten};

    struct karte {
    typ oben;
    typ rechts;
    typ unten;
    typ links;
    };

    void main()
    {
    karte spielkarte1= {rthinten,kvorne,revorne,ohinten};
    karte spielkarte2 = {rehinten,ovorne,rtvorne,khinten};
    karte spielkarte3 = {rehinten,ovorne,rtvorne,ohinten};
    karte spielkarte4 = {rthinten,kvorne,ovorne,rthinten};
    karte spielkarte5 = {rthinten,kvorne,revorne,khinten};
    karte spielkarte6 = {rthinten,ovorne,revorne,khinten};
    karte spielkarte7 = {rthinten,kvorne,rtvorne,rehinten};
    karte spielkarte8 = {rehinten,ohinten,ovorne,kvorne};
    karte spielkarte9 = {rehinten,ohinten,kvorne,ovorne};
    }

    ich würd des gerne machen, das ich sie spielkarte als array definiere und zwar global, geht des über des zweite?



  • itman schrieb:

    Dabei im C99 und im GCC also du kannst immer schreben (nich nur bei der Initialisierung):

    struct speilkarte t;
    t = (struct spielkarte) {1, 2, 3, 4};
    

    des struct kommt aber schon oben hin?



  • des struct kommt aber schon oben hin?

    Meinst du struct Definition?

    Wenn du spielkarte as array initialisieren (und global auch) moechte du kannst folgendes schrebein:

    karte spielkarte[10]={ 
    {rthinten,kvorne,revorne,ohinten},
    {rehinten,ovorne,rtvorne,khinten},
    {rehinten,ovorne,rtvorne,ohinten},
    {rthinten,kvorne,ovorne,rthinten},
    {rthinten,kvorne,revorne,khinten},
    {rthinten,ovorne,revorne,khinten},
    {rthinten,kvorne,rtvorne,rehinten},
    {rehinten,ohinten,ovorne,kvorne},
    {rehinten,ohinten,kvorne,ovorne} 
    }
    


  • danke genau des hab ich gesucht,

    jetzt hab ich nur noch ein kleines problem, ich hab wenn ich des in einer function aufrufe den fehler:

    int links_pruefen(int kartennr)
    {
        if (spielkarte[kartennr-1].rechts = rthinten and spielkarte[kartennr]=rtvorne)
           return true;
    

    fehler: c:\dokume1\vabene1\eigene~1\projekte\hello\puzzle.cpp:41: `rthinten' undeclared (first use this function)


Anmelden zum Antworten