2018年01月25日
《その256》 通常クラス内の関数テンプレート
メンバテンプレート
クラスの内部で、関数テンプレートの定義や宣言を行うことができます。下記のプログラムでは、クラス内部で、
・関数テンプレートの定義を行う場合 と、
・関数テンプレートの宣言のみを行い 定義はクラス外部で行う場合
の2通りの方法を実施しています。
このようなクラス内部で定義されたテンプレートは、クラスのメンバテンプレートと呼ばれます。
以下はプログラムです。
#include <string>
#include <iostream>
using namespace std;
class C {
public:
// クラス内部で定義された関数テンプレート
template <class Type1> void f1() {
Type1 x;
cout << "入力 : "; cin >> x;
cout << "「 " << x << " 」 が入力されました。\n";
}
// クラス内部で宣言された関数テンプレート
// (定義はクラス外部)
template <class Type2> void f2(Type2 t);
};
// クラスの外で、メンバテンプレート関数 f2 を定義。
template <class Type2> void C::f2(Type2 t) {
cout << "引数 「 " << t << " 」 を受け取りました。\n";
}
int main() {
C c;
c.f1<int>(); // Type1 → int
c.f1<string>(); // Type1 → string
cout << '\n';
c.f2(3.14); // Type2 → double
c.f2('a'); // Type2 → char
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7238616
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック