c++ - 在模板类实现中使用结构模板

标签 c++ templates data-structures

我正在尝试学习 C++ 中的模板用法。我创建了一个在队列类实现中使用的结构节点,但出现编译器错误: 成员函数 bool MyQueue::add(T data) 中 qnode 之前的错误“预期类型说明符”

#include <iostream>

using namespace std;

template <typename T>
struct qnode {
   qnode* Node;
   T data;
};

template <class T>
class MyQueue {
    qnode<T>* front;
    qnode<T>* end;
    public:
    MyQueue() {
        front=NULL;
        end=NULL;
    }
    bool add (T n);
    T get(void);
    bool empty(void)
    {
        if ( front == NULL)
            return true;
        else
            return false;
    }

    size_t size(void)
    {

    }
 };

 template <typename T>
    bool MyQueue<T>::add ( T n)
    {
        qnode<T>* temp = new qnode;
        temp->data = n;
        temp->Node = NULL;
        if ( front == NULL )
        {
            cout << "Adding front qnode " << endl;
            front = end= temp;
           // front->Node = end;
            return true;
        }
            cout << "Adding  qnode " << endl;
        end->Node = temp;
        end=temp;
   //delete temp;

        return true;
    }

我期待一个很好的解释,说明如何在这种嵌套实现中解析模板参数。

最佳答案

您的 new 有语法错误。

qnode<T>* temp = new qnode;

应该是

qnode<T>* temp = new qnode<T>();

记住,没有模板参数的模板类对编译器来说是没有意义的。每当您键入 qnode(在初始声明之后)时,您还需要键入它的模板参数!

关于c++ - 在模板类实现中使用结构模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19019912/

相关文章:

c++ - 在C++中表示0x00到0x7F范围内的任何通用字符?

c++ - 如果其中一个槽返回真值,有没有办法阻止 boost::signal 调用它的槽?

子类上的 C++ 模板父类构造函数

c - 获取C中嵌套数组的大小

C++模板返回具有相同参数的不同类型

c++ - 如何存储或转发 CRTP 模板类的类型

templates - 有没有办法通过模板将 imagePullSecrets 添加到默认的 ServiceAccount?

algorithm - 使用 2^n 步来获得房间中每个可能的人组合

c++ - 实现一个递归的Void函数(求二叉搜索树的高度)

c++ - 通过使它们成为自由函数来对私有(private)方法进行单元测试