クラステンプレート

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

テンプレートは、クラスにも利用できます。
関数テンプレートと同じような使い方です。

スポンサーリンク

#include <cstdlib>
#include <iostream>
 
// 足し算のクラス
template<typename kind>
class sum {
public:
    kind calc(const kind num1, const kind num2) {
        return num1 + num2;
    }
};
 
int main() {
    sum<double> calc_test;
    double result = calc_test.calc(4.5, 2.3);
 
    std::cout << result << "\n";
 
    return 0;
}

実行結果。

6.8

クラスからインスタンス化を行うときに注意が必要です。
ただ単に、「sum calc_test;」としてもデータ型が特定できないため、コンパイルエラーとなります。
「sum<double> calc_test;」と書いて、型を指定してやる必要があります。

または、以下のように書きます。
クラス内でメンバ関数のプロトタイプだけ宣言した場合は・・・

#include <cstdlib>
#include <iostream>
 
// 足し算のクラス
template<typename kind>
class sum {
public:
    kind calc(const kind num1, const kind num2);
};
 
template<typename kind>
kind sum<kind>::calc(const kind num1, const kind num2) {
    return num1 + num2;
}
 
int main() {
    sum<double> calc_test;
    double result = calc_test.calc(4.5, 2.3);
 
    std::cout << result << "\n";
 
    return 0;
}

実行結果。

6.8
スポンサーリンク
 
スポンサーリンク