■クラステンプレート(Tはプレースホルダ)
template <class Ty class クラス名{
private:
T メンバ変数名;
public:
Tメンバ関数名(T 引数名){
Tをデータ型とした変数を使った処理;
}
}
list10_4.cpp
#include <iostream>
using namespace std;
// MyTriangleクラスの定義と実装
template <class T> class MyTriangle {
private:
T bottom; // 底辺
T height; // 高さ
public:
// コンストラクタ
MyTriangle(T bottom, T height) {
this->bottom = bottom;
this->height = height;
}
// 面積を返すメンバ関数
T getArea() {
return this->bottom * this->height / 2;
}
};
// main関数
int main() {
// int型でMyTriangleクラスをインスタンス化する際にコンストラクタ引数として30、40渡す
MyTriangle<int> iObj(10, 20);
//クラスメソッドgetArea()を呼ぶ
cout << "int型の三角形の面積:" << iObj.getArea() << endl;
// double型でMyTriangleクラスををインスタンス化する際にコンストラクタ引数として30、40渡す
MyTriangle<double> dObj(30.0, 40.0);
//クラスメソッドgetArea()を呼ぶ
cout << "double型の三角形の面積:" << dObj.getArea() << endl;
return 0;
}
cd_samples10_4.cmd
C:\samples\chapter10>cd C:\samples\chapter10\
C:\samples\chapter10>g++ -o list10_4.exe list10_4.cpp
C:\samples\chapter10>list10_4.exe
int型の三角形の面積:100
double型の三角形の面積:600
C:\samples\chapter10>cmd /k
C:\samples\chapter10>