URL: https://linuxfr.org/forums/programmation-c/posts/classe-c-membre-structure-c-et-allocation-dynamique Title: classe C++, membre structure C et allocation dynamique Authors: audionuma Date: 2017年04月21日T12:21:11+02:00 License: CC By-SA Tags: c++11 et pointeur Score: 3 Bonjour, je m'essaye (débutant) à développer une classe c++ dont certains membre sont des pointeurs vers des structures définies dans une bibliothèque c. Par exemple : ```C++ /* maclasse.hh */ #include class MaClasse { public: MaClasse(); ~MaClasse(); int init(); private: ma_struct_c *s; //struct définie dans une_lib_en_c.h }; MaClasse::MaClasse() { s = nullptr; } MaClasse::~MaClasse() { if (s != nullptr) { // s_destroy définie dans une_lib_en_c.h s_destroy(&s); delete s; } } // Comme il semble que ce n'est pas possible/propre de vérifier // la bonne exécution de l'allocation dynamique de s dans le constructeur, // fonction d'initialisation avec éventuelle erreur en retour. int MaClasse::init() { s = new ma_struct_c; if (s != nullptr) { // s_init définie dans une_lib_en_c.h // retourne 0 en cas de succès. return s_init(s); } else { return 1; } } ``` Quelques questions : Est-ce que c'est propre/utile/important de remplacer les malloc/free par des new/delete ? Est-ce que cette implémentation est correcte pour la bonne libération de la mémoire allouée dynamiquement dans `MaClasse::init()` lorsque le destructeur de MaClasse est appelé ? Bonus : Puisque j'ai au moins un pointeur comme variable membre, je suppose que je dois faire gaffe à redéfinir le constructeur de copie de MaClasse ? Merci de vos conseils ou suggestions.

AltStyle によって変換されたページ (->オリジナル) /