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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } };, si il faut plus de détail sur le code n'hésitez pas à demander
Merci d'avance
Partager