no match for operator '++' in ......


  • Administrator

    Naja, anstatt einfach C Arrays zu verwenden, könntest du ja zum Beispiel einen std::vector verwenden oder eine Klasse Cardset machen und dann enstprechend darauf zugreifen. Oder gar ein boost::array verwenden usw. usf. Es gibt viele Möglichkeiten um auf den Zeiger zu verzichten und die ganze Sache auch etwas sicherer vor Abstürzen zu machen. Deiner Kreativität kannst du freien Lauf lassen, wenn dir die Funktion nicht gefällt 😉

    Grüssli



  • wie jz daran denken? was ist so schwer daran?

    Card cardset;
    changecards (&cardset, 3456786543);
    

    aber:

    Card CardSetd[32];
    
    CardSetd[32] = Cadset;
    

    sollte nicht wirklich gehen...

    und was soll deine funktion eigentlich so richtig machen? ich meine: unter dem namen kann ich mnir was vorstellen, aber das scheint sie nicht zu machen Oo

    bb



  • oO... leider habe ich von vectoren und boost:arrays noch keine Ahnung 😞 soweit bin ihc nicht.... aber danke für die information, ich werde mich danach eingehend mit vectoren auseinander setzen, scheinen ja für viele Dinge sehr nützlich zu sein....

    XD das ist nur der Anfang der Prozedur... der Name stimmt schon, und der Klassen-Array soll die Adressen auf die Richtigen Klassen (die alle eine Karte in einem 4Farben à 8 Karten Set darstellen) beinhalten, ich brauche diesen array, damit ich eine "Karte vom Stapel nehmen kann" und sie danach aus dem Stapel lösche, da ich sonst das Risiko habe, das ich Karten 2 mal austeile.....



  • Jud4s schrieb:

    void changecards(Card* Cadset,int& Cardsremain)
    {
         Card CardSetd[32];
         // ...
                 CardSetd[32] = Cadset; // Zugriff ausserhalb Array
                 Cadset++; // wieso?
    

    Ich versteh deswegen trotzdem nicht genau, was du willst... Wieso musst du Cadset erhöhen? Und wofür brauchst du die Zählvariable i ? Könntest du nicht mit der arbeiten?

    Jud4s schrieb:

    ich werde mich danach eingehend mit vectoren auseinander setzen, scheinen ja für viele Dinge sehr nützlich zu sein....

    In der Tat 😉



  • Cadset ist der Pointer auf die 0-Stelle des Klassen-Arrays.... den muss ich erhöhen, damit ich auch auf alle stellen des Arrays einmal zeige....

    Das mit der Zählariable i war ein dämlciher fehler von mir:

    void changecards(Card* Cadset,int& Cardsremain)
    {
         Card* CardSetd[32];
         for(int i = 0; i < 32; i++)
         {
                 CardSetd[i] = Cadset;
                 ++Cadset;
         };
    
    };
    

    so geht es jezz



  • nja danke... ich glaube ich muss ein neuen Thread aufmachen um mein jetziges Probl zu lösen 😕



  • machs doch einfach so:

    void changecards(Card& Cadset,int& Cardsremain)
    {
    Card ptr = &Cadset;
    Card
    CardSetd[32];
    for(int i = 0; i < 32; i++)
    CardSetd[i] = *ptr++;

    };

    du übergibst die referenz und holst dir von der referenz einen zeiger 😃



  • Witzbold 😉 ... ich kann dem ganzen aber keinen Array übergeben :(..... ihc bekomme einen Linkererror



  • boar...
    na dann mach es doch ma so, wie du denkst (mit arrayübergabe)
    und dann poste: die funktion an sich, den funktionsaufruf und die definition der übergebenen parameter an die futnkion...

    so schwer? Oo



  • oO Problem gelöst... war ein dämlicher Syntax-Fehler.... habe vergessen die Funktion einer Klasse zuzuordnen -.-


Anmelden zum Antworten