07内部类模版

内部类模板

模板中再嵌入一个模板类

内部类

顾名思义,内部类就是将一个类定义在另一个类内部里面。
内部类与外部类:无任何关系,相互不能调用和访问。

普通内部类声明
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();
}

你可能感兴趣的:(C++模板进阶-泛型模板元编程,学习笔记)