[C++]スラスラわかるC++ クラステンプレート 10_4 cpp class Template Standard Template Library (STL)

■クラステンプレート(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>

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です