C++ ';T';未在此范围中声明

C++ ';T';未在此范围中声明,c++,C++,我正在写一个实现堆栈功能的程序。我的代码如下: class StackOfNodees { private: Node<T>* m_top; int m_size; public: StackOfNodees(); bool isEmpty() const; int size() const; void push(T value); T pop(); }; 有人能帮忙吗?如果有人能解释一下模板是用来做什么的,那也太好了 你需

我正在写一个实现堆栈功能的程序。我的代码如下:

class StackOfNodees
{
private:
    Node<T>* m_top;
    int m_size;

public:
    StackOfNodees();
    bool isEmpty() const;
    int size() const;
    void push(T value);
    T pop();
};
有人能帮忙吗?如果有人能解释一下模板是用来做什么的,那也太好了

你需要把

template <typename T>
模板
语句之前。

您需要将

template <typename T>
模板

语句之前。

目前来看,
StackOfNodes
不知道什么是
T
。就编译器所知,T可以是任何东西。因此,您必须给
StackOfNodes
一个模板类型
T
,以便它可以在类中引用它

例如,代码如下所示:

template<class T>
class StackOfNodes
{
 ... // code

};
模板
节点类
{
…//代码
};

即使
节点
有一个类型T,但
堆栈节点
没有。在添加模板类型之前,编译器不能假设任何内容。一旦添加了它,代码应该编译(关于提到T的错误)

就目前而言,
StackOfNodes
不知道什么是
T
。就编译器所知,T可以是任何东西。因此,您必须给
StackOfNodes
一个模板类型
T
,以便它可以在类中引用它

例如,代码如下所示:

template<class T>
class StackOfNodes
{
 ... // code

};
模板
节点类
{
…//代码
};

即使
节点
有一个类型T,但
堆栈节点
没有。在添加模板类型之前,编译器不能假设任何内容。一旦添加了它,代码应该编译(关于提到T的错误)

您需要在类中添加模板声明,以便它知道T是什么。。。或写入
节点*m_top无论你打算在那里做什么。我的.hpp文件中有这些。我将把它添加到op中。您需要在类中添加模板声明,以便它知道T是什么。。。或写入
节点*m_top无论你打算在那里做什么。我的.hpp文件中有这些。我将把它添加到op.which class语句中
class StackOfNodes
?是的,请参见Alejandro Lucena
的回答哪一类声明
class StackOfNodes
?是的,请参见Alejandro Lucena的答案