template <typename T> class ArrayParam { private: int _size; T* _value; public: ArrayParam(int n = 0) { init(n);} virtual ~ArrayParam(void) {} // ディストラクタではなく,free() で解放する. void init(int n = 0); void free(void); void free_ptr(void); // _value[i] がポインタの場合,各ポイント先を開放 int get_size(void) { return _size;} T get_value(int n); bool set_value(int n, T val); void dup(ArrayParam<T> a, bool del = true); // del: 複製を作る前に free()を実行するかどうか.メモリリーク,2重解放に注意. };