2018年01月27日
《その259》 テンプレートクラス内の関数テンプレート
テンプレートクラス内の関数テンプレート
テンプレートクラスの内部で、関数テンプレートの定義や宣言を行うことができます。
下記のプログラムでは、テンプレートクラス内部で、
・関数テンプレートの定義を行う場合 と、
・関数テンプレートの宣言のみを行い 定義はテンプレートクラスの外で行う場合
の2通りの方法を実施しています。
以下はプログラムです。
#include <string>
#include <iostream>
using namespace std;
template <class Type> class C {
public:
Type t; // データメンバ
// クラステンプレート内で、関数テンプレート f1 を定義
template <class T1> void f1(T1 x) {
cout << t << ' ' << x << '\n';
}
// クラステンプレート内で、関数テンプレート f2 を宣言
// (定義は クラス の外)
template <class T2> void f2(T2 x);
// コンストラクタ
C(Type x) : t(x) { }
};
// クラス の外で、メンバテンプレート関数 f2 を定義
template <class Type>
template <class T2> void C<Type>::f2(T2 x) {
cout << t << ' ' << x << '\n';
}
int main() {
C<string> abc("ABCDEF");
abc.f1("GHIJKL");
abc.f1(3.14);
cout << '\n';
abc.f2("GHIJKL");
abc.f2(3.14);
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7246091
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック