33 void increase() { ++c; }
34 unsigned int decrease() {
return --c; }
45 const unsigned int x, y;
49 array(
unsigned int x,
unsigned int y) :
59 data(p.data) { count->increase(); }
61 ~
array() {
if (count->decrease() == 0) {
delete count;
delete [] data; } }
63 unsigned int length()
const {
return x * y; }
65 T* operator[](
unsigned int a) {
return a < x ? &data[a * y] : 0; }
67 T
const* operator[](
unsigned int a)
const {
return a < x ? &data[a * y] : 0; }