rule of five und virtual destructor
-
Die Warnung weißt sogar darauf hin das der destructor default ist.
class '...' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator
-
die Warnung verweist hier her:
und diese wiederum hier her:
-
@booster Und wie wäre es mit lesen, was in dem Verweis steht?
Z.B. das hier:
Declaring any special member function except a default constructor, even as =default or =delete, will suppress the implicit declaration of a move constructor and move assignment operator
-
Ich habe das gelesen. Aber was willst du mir damit sagen?
-
@booster Ich will dir sagen, dass der resharper recht hat.
-
Ja das hat manni ja auch geschreiben.
Sprich ich muss in einem interface (also abstracte basisklasse) alle move und copy operations einfügen auch wenn nur als default gekennzeichnet. Das war ja die Ausgangsfrage.
-
Du hast Recht, sorry dass ich Unsinn geschrieben habe.
Die Frage ist allerdings ob man überhaupt will dass Klassen die ein Interface implementieren per Default move- und copyable sind.
-
@hustbaer sagte in rule of five und virtual destructor:
Die Frage ist allerdings ob man überhaupt will dass Klassen die ein Interface implementieren per Default move- und copyable sind.
Wieso das hat ja nichts miteinander zu tun.
Aber ich muss zwingend im interface alle opertionen aufführen. Ob ich sie nun implementiere, als default oder als deleted kennzeichne. Nun ja finde ich nicht schön/übersichtlich.
-
@booster sagte in rule of five und virtual destructor:
Wieso das hat ja nichts miteinander zu tun.
Theoretisch ja. Oft ist es aber so dass Objekte die von abstrakten Interface-Klassen erben gar nicht kopierbar sein sollten.
Aber ich muss zwingend im interface alle opertionen aufführen. Ob ich sie nun implementiere, als default oder als deleted kennzeichne. Nun ja finde ich nicht schön/übersichtlich.
Nur wenn du alle verfügbar haben willst. Wenn du dagegen alle
=delete
haben willst reicht es entweder den Move-Ctor oder den Move-Assignment-Operator=delete
zu machen.