07内部クラステンプレート
11092 ワード
内部クラステンプレート
テンプレートにテンプレートクラスをもう1つ埋め込む
内部クラス
名前の通り、内部クラスは1つのクラスを別のクラスの内部に定義します.内部クラスと外部クラス:何の関係もなく、相互に呼び出され、アクセスできません.
一般内部クラス宣言
一般的な内部クラスのケース
テンプレート内部クラス宣言
テンプレートの内部クラスのケース
テンプレートにテンプレートクラスをもう1つ埋め込む
内部クラス
名前の通り、内部クラスは1つのクラスを別のクラスの内部に定義します.内部クラスと外部クラス:何の関係もなく、相互に呼び出され、アクセスできません.
一般内部クラス宣言
class Outer
{
public:
class Inner
{
public:
int i;
void print();
};
public:
void print();
float o;
}
一般的な内部クラスのケース
using namespace std;
class Outer
{
public:
class Inner
{
public:
int i;
void print();
};
public:
void print();
float o;
}
void Outer::print()
{
cout << "Outer" << endl;
}
void Outer::Inner::print()
{
cout << "Inner" << endl;
}
void main()
{
//
Outer o;
o.print();
//
Outer::Inner i;
i.print();
}
テンプレート内部クラス宣言
using namespace std;
template <typename T1>
class Outer
{
public:
template <typename T2>
class Inner
{
public:
T2 i;
void print();
};
public:
void print();
T1 o;
}
テンプレートの内部クラスのケース
using namespace std;
template <typename T1>
class Outer
{
public:
template <typename T2>
class Inner
{
public:
T2 i;
void print();
};
public:
void print();
T1 o;
}
template <typename T1>
void Outer<T>::print()
{
cout << "Outer" << endl;
}
//
template <typename T1>
template <typename T2>
void Outer<T1>::Inner<T2>::print()
{
cout << "Inner" << endl;
}
void main()
{
//
Outer<int> o;
o.print();
//
Outer<int>::Inner<float> i;
i.print();
}