C++ 使用链表调用堆栈的默认构造函数获取错误C2760
好的,当涉及到内部类默认构造函数时,会遇到一个块。在这个任务中,我必须利用链表创建一个堆栈,我得到了所有设置的函数。我只是在尝试为内部类StackNode正确设置默认构造函数时遇到了麻烦,至少编译器是这么告诉我的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*
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 ')'