Salut tout le monde
j’ai un problème avec la surcharge de mon operateur« sur visual studio car ce dernier détecte une erreur mais que n’arrive pas à résoudre
voici mon fichier .h:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include <utility> #include <string> #include <ostream> class X { private: std::string m_mot; int* m_ptr; public: X(): m_mot{"mot Inconnue."},m_ptr{new int(0)} {} X(std::string mot, int ptr): m_mot{mot},m_ptr{new int(ptr)} {} X(X const & copie): m_mot{copie.m_mot},m_ptr{new int(*(copie.m_ptr))} {} X& operator=(X const & copie) { if (this != &copie) { m_mot = copie.m_mot; delete m_ptr; m_ptr = new int(*(copie.m_ptr)); } return *this; } X(X&& source): m_mot{std::move(source.m_mot)}, m_ptr{new int(*(std::exchange(source.m_ptr,nullptr)))} {} X& operator=(X&& source) { if (this != &source) { m_mot = std::move(source.m_mot); m_ptr = std::exchange(source.m_ptr, nullptr); } return *this; } void swap(X autre) { std::swap(m_mot, autre.m_mot); std::swap(m_ptr, autre.m_ptr); } void afficher(std::ostream flux) { flux << "\n\nMot: " << m_mot << "\nValeur: " << *m_ptr << std::endl; } }; std::ostream& operator<<(std::ostream flux1, X const a) { a.afficher(flux1); return flux1; } |
désolé pour le pointeur nue car c’est juste pour me facilité à comprendre la semantique de mouvement
Merci pour votre aide
+0
-0