Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit Zuweisungsoperator

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.10.2007, 11:17 Uhr
RedEagle



Hi
Mal wider ein operator-Problem.

Folgender Code:

C++:
class TEST
{
public:

  //...

  int operator= (TEST &arg)
  {
   return var;
  }
  
private:

  int var;
};

int main()
{
TEST test;

//...

int x;
x = test; //Hier gibts einen Compilererror

return 0;
}



"error":
cannot convert


Leider finde ich im netz immer nur den fall, das eine Variable einem Objekt zugewiesen wird, deshalb...

1. Ist es überhaupt möglich, den Zuweisungsperator so einzusetzen?
2. Wenn ja, wo liegt mein Fehler?
3. Was muss ich mit dem Argument des Operators anfangen? Einfach ignorieren?
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.10.2007, 12:03 Uhr
Blubber2063



Die Zuweisung ist falsch rum, du weist einem int ein Test zu, du hast aber den Operator Test = int definiert, willst du das andersrum auch können wirst du einen friend Operator brauchen den du außerhalb der Klasse definierst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.10.2007, 17:42 Uhr
RedEagle





C++:
class TEST
{
public:
  int var;

};

int operator= (TEST &arg)
{ //Hier gibts 2 Compilerfehler. DEV-CPP zeigt "`int " an
return arg.var;
}

int main()
{
TEST test;
test.var = 7357;

int x;
x = test;

return 0;
}

--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.10.2007, 18:31 Uhr
0xdeadbeef
Gott
(Operator)


Einen Zuweisungsoperator kannst du so nicht definieren. Was geht, ist ein Konvertierungsoperator, also

C++:
struct TEST {
  int var;

  operator int() const {
    return var;
  }
};

int main() {
  TEST test;
  test.var = 7357;

  int x;
  x = test;

  return 0;
}


...aber ich würd davon eigentlich absehen, solange es nicht unbedingt notwendig ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 03.10.2007 um 18:33 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.10.2007, 18:57 Uhr
RedEagle




Funktioniert.


Zitat von 0xdeadbeef:
[...]...aber ich würd davon eigentlich absehen, solange es nicht unbedingt notwendig ist.

Ich bruche das für meine CFGFILE-Klasse, bei der ich auch die Probleme mit den Indexoperator ([]) hatte.

C++:
int x;
x = cfgfile["Gruppe1"]["Eintrag1"]

Ich finde die Lösung mit dem Zuweisungsoperator schöner als ein .GetValue();
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: