クラステンプレートの定義では、次の例のようにクラスデータと関数メンバーを宣言する必要があります。
template <class Elem> class Array {
Elem* data;
int size;
public:
Array( int sz );
int GetSize();
Elem& operator[]( int idx );
};
|
template <unsigned Size> class String {
char data[Size];
static int overflows;
public:
String( char *initial );
int length();
};
|
関数テンプレートとは違って、クラステンプレートには class Elem のような型パラメータと unsigned Size のような式パラメータの両方を指定できます。式パラメータには次の情報を指定できます。
整数型または列挙型を持つ値
オブジェクトへのポインタまたは参照
関数へのポインタまたは参照
クラスメンバー関数へのポインタ