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重解放に注意.
};