C++ 模板类的嵌套类,模板类的静态成员变量

C++ 模板类的嵌套类,模板类的静态成员变量,c++,templates,static,nested,C++,Templates,Static,Nested,以下代码起作用: template<typename T> class OtherClass { public: T member; }; template<typename T> class MyClass { public: vector<vector<OtherClass<T> > * > stacks; }; template<typename T> static vector&

以下代码起作用:

template<typename T> class OtherClass
{
public:
    T member;
};

template<typename T> class MyClass
{         
public:
    vector<vector<OtherClass<T> > * > stacks;
};

template<typename T>
static vector<vector<OtherClass<T> > * > MyClass<T>::stacks =
    vector<vector<OtherClass<T> > * >(1024);
模板类其他类
{
公众:
T成员;
};
模板类MyClass
{         
公众:
向量堆栈;
};
模板
静态向量MyClass::stacks=
向量(1024);
但这一条没有:

template<typename T> class MyClass
{         
public:
    class OtherClass
    {
    public:
        T member;
    };

    static vector<vector<OtherClass> * > stacks;
};

template<typename T>
vector<vector<MyClass<T>::OtherClass> * > MyClass<T>::stacks =
    vector<vector<MyClass<T>::OtherClass> * >(1024);
模板类MyClass
{         
公众:
另一类
{
公众:
T成员;
};
静态向量堆栈;
};
模板
向量MyClass::堆栈=
向量(1024);
gcc的投诉包括: 错误:“模板类向量”的模板参数列表中参数1的类型/值不匹配

你知道怎么把这个班安顿好吗


谢谢

您需要告诉编译器OtherClass是一个具有typename的嵌套类型

template<typename T>
vector<vector<typename MyClass<T>::OtherClass> * > MyClass<T>::stacks =
    vector<vector<MyClass<T>::OtherClass> * >(1024);
模板
向量MyClass::堆栈=
向量(1024);
无需重复该类型两次:

template<typename T>
vector<vector<typename MyClass<T>::OtherClass> * > MyClass<T>::stacks (1024);
模板
向量MyClass::堆栈(1024);
如果不想重复复杂的原始类型,请使用typedef,但仍需要typename:

// in Myclass : using StackType = vector<vector<OtherClass>*>;
template<typename T>
typename MyClass<T>::StackType MyClass<T>::stacks (1024);
//在Myclass中:使用StackType=vector;
模板
typename MyClass::StackType MyClass::stacks(1024);

您需要告诉编译器OtherClass是一个带有typename的嵌套类型

template<typename T>
vector<vector<typename MyClass<T>::OtherClass> * > MyClass<T>::stacks =
    vector<vector<MyClass<T>::OtherClass> * >(1024);
模板
向量MyClass::堆栈=
向量(1024);
无需重复该类型两次:

template<typename T>
vector<vector<typename MyClass<T>::OtherClass> * > MyClass<T>::stacks (1024);
模板
向量MyClass::堆栈(1024);
如果不想重复复杂的原始类型,请使用typedef,但仍需要typename:

// in Myclass : using StackType = vector<vector<OtherClass>*>;
template<typename T>
typename MyClass<T>::StackType MyClass<T>::stacks (1024);
//在Myclass中:使用StackType=vector;
模板
typename MyClass::StackType MyClass::stacks(1024);

您需要告诉编译器OtherClass是一个带有typename的嵌套类型

template<typename T>
vector<vector<typename MyClass<T>::OtherClass> * > MyClass<T>::stacks =
    vector<vector<MyClass<T>::OtherClass> * >(1024);
模板
向量MyClass::堆栈=
向量(1024);
无需重复该类型两次:

template<typename T>
vector<vector<typename MyClass<T>::OtherClass> * > MyClass<T>::stacks (1024);
模板
向量MyClass::堆栈(1024);
如果不想重复复杂的原始类型,请使用typedef,但仍需要typename:

// in Myclass : using StackType = vector<vector<OtherClass>*>;
template<typename T>
typename MyClass<T>::StackType MyClass<T>::stacks (1024);
//在Myclass中:使用StackType=vector;
模板
typename MyClass::StackType MyClass::stacks(1024);

您需要告诉编译器OtherClass是一个带有typename的嵌套类型

template<typename T>
vector<vector<typename MyClass<T>::OtherClass> * > MyClass<T>::stacks =
    vector<vector<MyClass<T>::OtherClass> * >(1024);
模板
向量MyClass::堆栈=
向量(1024);
无需重复该类型两次:

template<typename T>
vector<vector<typename MyClass<T>::OtherClass> * > MyClass<T>::stacks (1024);
模板
向量MyClass::堆栈(1024);
如果不想重复复杂的原始类型,请使用typedef,但仍需要typename:

// in Myclass : using StackType = vector<vector<OtherClass>*>;
template<typename T>
typename MyClass<T>::StackType MyClass<T>::stacks (1024);
//在Myclass中:使用StackType=vector;
模板
typename MyClass::StackType MyClass::stacks(1024);