C++ 创建子类变量的语法 模板 类堆栈 { 私人: 模板 班级名单 { 公众: 类节点 { 公众: L数据; 节点*下一步; }; 节点*头; }; 名单; 公众: };

C++ 创建子类变量的语法 模板 类堆栈 { 私人: 模板 班级名单 { 公众: 类节点 { 公众: L数据; 节点*下一步; }; 节点*头; }; 名单; 公众: };,c++,oop,C++,Oop,我想在Stack类中创建一个class Node变量,我正在使用这种语法 List::节点版本; 但VisualStudio将其视为语法错误。请帮帮我,就像@songyuanyao说的那样试试看 typename列表::节点版本 要在堆栈类中创建类节点的变量,如@songyuanyao所说,请尝试 typename列表::节点版本 要在堆栈类中创建类节点的变量,请尝试typename List::Node version。谢谢,它工作了,但它在这里有什么用#Songyuan可能重复,因为Lis

我想在Stack类中创建一个class Node变量,我正在使用这种语法

List::节点版本;
但VisualStudio将其视为语法错误。请帮帮我,

就像@songyuanyao说的那样试试看
typename列表::节点版本
要在堆栈类中创建类节点的变量,如@songyuanyao所说,请尝试
typename列表::节点版本

要在堆栈类中创建类节点的变量,请尝试
typename List::Node version。谢谢,它工作了,但它在这里有什么用#Songyuan可能重复,因为
List::Node
依赖于模板参数
T
,标准规定我们必须使用
typename
告诉编译器
List::Node
是类型的名称(而不是像成员名称这样的其他东西)。有关详细信息,请参阅@NickyC发布的链接。请尝试
typename List::Node version。谢谢,它工作了,但它在这里有什么用#Songyuan可能重复,因为
List::Node
依赖于模板参数
T
,标准规定我们必须使用
typename
告诉编译器
List::Node
是类型的名称(而不是像成员名称这样的其他东西)。有关详细信息,请参阅@NickyC发布的链接。
template <class T>
class Stack
{
private:
    template <class L>
    class List
    {
    public:
        class Node
        {
        public:
            L data;
            Node* next;
        };
    Node* head;
};
    List<T> list;
public:
};
 List<T>::Node version;