[C++] Operator nur als Member überladbar
Verfasst: 15.03.2013, 11:15
Moin,
ich habe 2 std::vectoren verschiedenen Typs, und wollte die jetzt einander zuweisen. Die entsprechende Schleife wollte ich dabei gerne in einen operator= packen statt in eine normale Funktion. Allerdings lässt mich mein Compiler nicht.
http://msdn.microsoft.com/de-de/library ... 80%29.aspx
Gut, da kann man vermutlich wenig machen, aber gibt es dafür auch einen Grund? Klar, normalerweise muss der operator= auch den private-Teil eines Objektes ändern, aber in diesem Fall reicht mir eben das public Interface aus. Außerdem ist doch auch der operator+= als globale Funktion erlaubt, und der macht doch fast das selbe.
Oder gibt es irgendwelche Fälle, in denen es der Compiler schwer hätte, den operator zu finden, wenn er kein Member ist? Es wäre halt schön, irgendeinen Grund für diese Einschränkung zu haben, denn sonst verbietet C++ ja auch nichts, was zwar meist gefährlich und sinnlos, in wenigen Fällen aber total nützlich ist.
ich habe 2 std::vectoren verschiedenen Typs, und wollte die jetzt einander zuweisen. Die entsprechende Schleife wollte ich dabei gerne in einen operator= packen statt in eine normale Funktion. Allerdings lässt mich mein Compiler nicht.
http://msdn.microsoft.com/de-de/library ... 80%29.aspx
Gut, da kann man vermutlich wenig machen, aber gibt es dafür auch einen Grund? Klar, normalerweise muss der operator= auch den private-Teil eines Objektes ändern, aber in diesem Fall reicht mir eben das public Interface aus. Außerdem ist doch auch der operator+= als globale Funktion erlaubt, und der macht doch fast das selbe.
Oder gibt es irgendwelche Fälle, in denen es der Compiler schwer hätte, den operator zu finden, wenn er kein Member ist? Es wäre halt schön, irgendeinen Grund für diese Einschränkung zu haben, denn sonst verbietet C++ ja auch nichts, was zwar meist gefährlich und sinnlos, in wenigen Fällen aber total nützlich ist.