我正在编写一个实现堆栈功能的程序。我的代码如下:
class StackOfNodees
{
private:
Node<T>* m_top;
int m_size;
public:
StackOfNodees();
bool isEmpty() const;
int size() const;
void push(T value);
T pop();
};
Node.hpp
template<typename T>
Node<T>::Node()
{
Node.setPrevious(nullptr);
Node.setValue();
}
//initiation of getters
template<typename T>
T Node::getValue()
{
return m_value;
}//end getValue
template<typename int>
int Node::getPrevious()
{
return m_previous;
}//end getPrevious
//initiation of setters
template<typename void>
void Node::setValue(T value)
{
m_value = value;
}//end setValue
template<typename void>
void Node::setPrevious(Node<T>* previous)
{
Node<T>* previous = m_previous;
}//end setPrevious
我得到错误:
‘T’ was not declared in this scope|
有人可以帮忙吗?同样,如果有人可以解释使用什么模板,那也很好。
最佳答案
就目前而言,StackOfNodes
不知道什么是T
。就编译器所知,T可以是任何东西。因此,您必须给StackOfNodes
一个模板化类型T
,以便它可以在类中引用它。
例如,代码将如下所示:
template<class T>
class StackOfNodes
{
... // code
};
即使
Node
具有类型T,但StackOfNodes
却没有。在添加该模板化类型之前,编译器无法假定任何内容。一旦添加,代码应编译(关于提到T的错误)关于c++ - 未在此范围内声明“T”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22239888/