Bonjour à tous,
Je suis actuellement dans la lecture d'un excellent bouquin sur la programmation de jeu, une partie traite des classes optionnelles voila un bout du code :Seulement c'est la première fois que je vois l'opérateur new utilisé de cette manière, il n'y a de delete associé nulle part dans le code et GetT dans ce cas retourne un T*const donc les données ne sont pas sencé être modifié sauf si j'ai rien compris....... Si vous pouviez m'éclairer sur ce mystère 8O, si il faut plus de détail sur le code n'hésitez pas à demander:DCode:
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 // Base : template <unsigned long size> class optional_base { public: optional_base(); optional_base(const optional_base &t); optional_base & operator = (const optional_base &t); bool const Valid() const; bool const UnValid() const; protected: bool m_bValid; char m_data[size]; }; // Optional : template <class T> class optional : public optional_base<sizeof(T)> { public: // Constructeurs... // Operateurs... private: const T * const GetT() const { return reinterpret_cast<const T * const>(m_data); } T * const GetT() { return reinterpret_cast<T * const>(m_data); } void Construct(const T &t) { new (GetT()) T(t); } void Destroy() { GetT()->~T(); } };
Merci d'avance