Je sortais de la doc d'ou mon allusion a mon niveau d'anglais.
-
Edit
J'ai tout teste avec ce code la:
#include <iostream>
#include <memory>
#include <cstdlib>
class MaClasse
{
public:
MaClasse(const int number) : m_ptr(new int(number))
{
//rien a faire ici
}
std::unique_ptr<int> m_ptr;
};
int main(int argc, char** argv)
{
//bloc sujet aux exceptions
try
{
//allocation dynamique dans le constructeur /!\ exceptions
MaClasse ptr(15);
//ecriture de la valeur du pointeur
std::cout << *(ptr.m_ptr) << std::endl;
//declaration d'un pointeur intelligent
std::unique_ptr<int> ptr2;
//transfert de responsabilites
ptr2.reset(ptr.m_ptr.release());
ptr.m_ptr.reset(nullptr);
//ecriture de la valeur du pointeur intelligent non-nu
std::cout << *ptr2 << std::endl;
//ecriture de l'adresse sur laquelle pointe le pointeur intelligent inintial
std::cout << ptr.m_ptr.get() << std::endl;
}
//en cas d'echec du programme (notamment l'allocation dynamique)
catch(const std::exception& except)
{
//ecriture du raport d'exception
std::cerr << except.what() << std::endl;
}
return 0;
}
Je crois qu'il n'y a que la non encapsulation de MaClasse qui pose probleme (pour que le code soit propre, quoi). Si vous voyez d'autres problemes, je suis preneur (c'est quand meme important de coder proprement, non?).
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.