C++ 使用链表调用堆栈的默认构造函数获取错误C2760

C++ 使用链表调用堆栈的默认构造函数获取错误C2760,c++,constructor,linked-list,stack,C++,Constructor,Linked List,Stack,好的,当涉及到内部类默认构造函数时,会遇到一个块。在这个任务中,我必须利用链表创建一个堆栈,我得到了所有设置的函数。我只是在尝试为内部类StackNode正确设置默认构造函数时遇到了麻烦,至少编译器是这么告诉我的 class StackNode { // this is given in the assignment its not the full .h public: StackNode(const DataType& nodeData, StackNode*

好的,当涉及到内部类默认构造函数时,会遇到一个块。在这个任务中,我必须利用链表创建一个堆栈,我得到了所有设置的函数。我只是在尝试为内部类StackNode正确设置默认构造函数时遇到了麻烦,至少编译器是这么告诉我的

class StackNode { // this is given in the assignment its not the full .h
    public:
        StackNode(const DataType& nodeData, StackNode* nextPtr)
        {
            dataItem = nodeData;
            next = nextPtr;
        }

        DataType dataItem;
        StackNode* next;
    };

    StackNode* top;
};

// here is my default constructor for the class
template <typename DataType>
StackLinked<DataType>::StackLinked(int maxNumber)// <--this part is given inside is what i have done.
{
    top = NULL;
    StackNode::StackNode(const DataType x = NULL; StackNode * y = nullptr)
    {
        this->dataItem = x;
        this->next = y;
    }
//if i remove this i get error C2512 no appropriate default constructor for the StackNode<DataType>::StackNode
}

这是当我尝试构建代码时给出的错误

您尝试在
StackLinked
构造函数的主体定义内定义
StackNode
构造函数的主体。那是行不通的。它们需要单独定义。但是在
StackNode
类的声明中已经有了
StackNode
构造函数的内联定义,因此不需要为该构造函数定义第二个主体

模板
类StackLinked
{
私人:
类堆栈节点{
公众:
StackNode(常量数据类型和节点数据,StackNode*nextPtr)
{
数据项=节点数据;
next=nextPtr;
}
数据类型数据项;
StackNode*next;
};
StackNode*顶部;
公众:
StackLinked(int-maxNumber);
};
...
模板
StackLinked::StackLinked(int maxNumber)
{
top=NULL;
}
否则,不要将
StackNode
构造函数定义内联,就像您不支持
StackLinked
构造函数一样:

模板
类StackLinked
{
私人:
类堆栈节点{
公众:
StackNode(常量数据类型和节点数据,StackNode*nextPtr);
数据类型数据项;
StackNode*next;
};
StackNode*顶部;
公众:
StackLinked(int-maxNumber);
};
...
模板
StackLinked::StackLinked(int maxNumber)
{
top=NULL;
}
模板
StackLink::StackNode::StackNode(常量数据类型&节点数据,StackNode*nextPtr)
{
数据项=节点数据;
next=nextPtr;
}

堆栈节点不应该也是一个模板类吗?
(file dest)\StackLinked.cpp(11,23): error C2760: syntax error: unexpected token 'const', expected ')'
test6.cpp
(file dest)\StackLinked.cpp(11,23): error C2760: syntax error: unexpected token 'const', expected ')'