2018年01月28日
《その260》 テンプレートクラス内のクラステンプレート(1)
テンプレートクラス内のクラステンプレート(クラスの内部で定義)
テンプレートクラスの内部で、クラステンプレートの定義を行うことができます。
※テンプレートクラスの定義を 外部で行うこともできます(次回)。
以下はプログラムです。
#include <string>
#include <iostream>
using namespace std;
template <class T> class Outer {
public:
T t;
// 内部のクラステンプレート
template <class U> class Inner {
public:
U u;
// コンストラクタ
Inner(U x) : u(x) { }
void f1() { cout << u << '\n'; }
};
Inner<char> c;
Inner<double> d;
// コンストラクタ
Outer(T x, char y, double z)
: t(x), c(y), d(z) { }
void f2() {
cout << t;
c.f1();
}
};
int main() {
Outer<string> obj1("abcde", 'F', 1.38065);
obj1.f2();
obj1.d.f1();
cout << '\n';
Outer<int> obj2(12345, '6', 6.67408);
obj2.f2();
obj2.d.f1();
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7247578
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック