Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema con metodi di una classe in c++
Forum - C/C++ - problema con metodi di una classe in c++

Avatar
el cuba libre (Normal User)
Newbie


Messaggi: 20
Iscritto: 07/03/2011

Segnala al moderatore
Postato alle 12:15
Lunedì, 06/06/2011
salve a tutti
ho un problema con la ridefinizione degli operatori + e =, ho creato una classe chiamata brstringa che dovrebbe ridefinire gli operatori + e =, posto qui il codice,
Codice sorgente - presumibilmente C++

  1. #include <QtCore/QCoreApplication>
  2. #include <iostream>
  3. #include <cstring>
  4. using namespace std;
  5. class brstringa
  6. {
  7. public:
  8.     char *ptrstringa;
  9.     brstringa(char *ptr)
  10.     {
  11.         ptrstringa=new char(strlen(ptr)+1);
  12.         strcpy(ptrstringa,ptr);
  13.     }
  14.     brstringa operator +(brstringa &frase1,brstringa &frase2);
  15.     brstringa operator =(brstringa &frase1)
  16.     {
  17.         brstringa ptr(frase1.ptrstringa);
  18.         ptr.ptrstringa=new char(strlen(frase1.ptrstringa)+1);
  19.         return strcpy(ptr.ptrstringa,frase1.ptrstringa);
  20.     }
  21. };
  22. brstringa:: brstringa operator +(brstringa &frase1,brstringa &frase2)
  23. {
  24.     brstringa ptr(frase1.ptrstringa);
  25.     strcpy(ptr.ptrstringa,frase1.ptrstringa);
  26.     return strcat(ptr.ptrstringa,frase2.ptrstringa);
  27. }
  28. int main(int argc, char *argv[])
  29. {
  30.     QCoreApplication a(argc, argv);
  31.     brstringa frase1("ciao");
  32.     brstringa frase2("pecora");
  33.     brstringa frase(frase1+frase2);
  34.     brstringa frase3(frase1=frase2);
  35.     return a.exec();
  36. }


mi dice che l'operatore + può prendere solo 0 o 1 parametri ma ho visto altri codici funzionanti dove gli vengono passati due parametri.
chi mi può aiutare? grazie
grazie mille!

Ultima modifica effettuata da el cuba libre il 06/06/2011 alle 17:29
PM
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 16:30
Lunedì, 06/06/2011
figliolo, per quale motivo crei due post identici?

ho provato a chiederlo anche sull'altro post ma nessuno rispondeva e dato che era un post tutto sommato abbastanza vecchio ho pensato di riaprirne un altro, scusate! puoi comunque rispondere? grazie - el cuba libre - 06/06/11 16:54
PM
Avatar
andrex91 (Member)
Pro


Messaggi: 101
Iscritto: 01/05/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 18:03
Lunedì, 06/06/2011
Nel corpo della classe:
Codice sorgente - presumibilmente C/C++

  1. friend brstringa operator +(brstringa &frase1,brstringa &frase2);



Codice sorgente - presumibilmente C/C++

  1. brstringa operator +(brstringa &frase1,brstringa &frase2)
  2. {
  3.    // corpo della funzione
  4. }



Fare l'overload di un operatore è come fare frase1.operator + (frase2)
Quindi non puoi avere 2 parametri

Ultima modifica effettuata da andrex91 il 06/06/2011 alle 18:07
grazie mille, adesso funziona! - el cuba libre - 06/06/11 18:39
PM