… | |
… | |
61 | T *operator ->() const { return p; } |
61 | T *operator ->() const { return p; } |
62 | T &operator *() const { return *p; } |
62 | T &operator *() const { return *p; } |
63 | |
63 | |
64 | operator T *() { return p; } |
64 | operator T *() { return p; } |
65 | T *get () const { return p; } |
65 | T *get () const { return p; } |
|
|
66 | |
|
|
67 | private: |
|
|
68 | scoped_ptr (const scoped_ptr &); |
|
|
69 | scoped_ptr &operator =(const scoped_ptr &); |
66 | }; |
70 | }; |
67 | |
71 | |
68 | template<typename T> |
72 | template<typename T> |
69 | struct scoped_array |
73 | struct scoped_array |
70 | { |
74 | { |
… | |
… | |
84 | { |
88 | { |
85 | delete [] p; |
89 | delete [] p; |
86 | p = a; |
90 | p = a; |
87 | } |
91 | } |
88 | |
92 | |
89 | T & operator [](size_type idx) const { return p[idx]; } |
|
|
90 | |
|
|
91 | operator T *() { return p; } |
93 | operator T *() { return p; } |
92 | T *get () const { return p; } |
94 | T *get () const { return p; } |
|
|
95 | |
|
|
96 | private: |
|
|
97 | scoped_array (const scoped_array &); |
|
|
98 | scoped_array &operator =(const scoped_array &); |
93 | }; |
99 | }; |
94 | } |
100 | } |
95 | |
101 | |
96 | // original version taken from MICO, but this has been completely rewritten |
102 | // original version taken from MICO, but this has been completely rewritten |
97 | // known limitations w.r.t. std::vector |
103 | // known limitations w.r.t. std::vector |