c++ - 将模板传递给双端队列

标签 c++ templates

我正在尝试为 deque 编写一个容器类来制作一个循环缓冲区(在这里使用 deque 很重要,因为该类正在替换一个 vector 并且需要像这里一样使用)。我不想让容器类特定于特定的双端队列;也就是说,我希望该类成为模板类,并希望双端队列获得模板化类型。但是,我的代码在编译时给出了使用未定义类型的错误(c:\program files (x86)\microsoft visual studio 10.0\vc\include\deque(795): error C2027: use of undefined type 'dequeClass')。

代码:

#pragma once

#include <deque>

template<typename dequeClass>
class CircularDeque {
public:
    CircularDeque(int newMax);
    ~CircularDeque();
    void push_front(dequeClass&& val);
    void push_front(const dequeClass& val);
    void push_back(dequeClass&& val);
    void push_back(const dequeClass& val);
    std::deque<dequeClass> que;
    int getMax();
    void setMax(int newMax);
private:
    unsigned int max;
};

CircularDeque<class dequeClass>::CircularDeque(int newMax) {
    max = newMax;
}

void CircularDeque<class dequeClass>::push_front(dequeClass&& val) {
    que.push_front(val);
    if(que.size() > max) {
        que.pop_back();
    }
}

void CircularDeque<class dequeClass>::push_front(const dequeClass& val) {
    que.push_front(val);
    if(que.size() > max) {
        que.pop_back();
    }
}

void CircularDeque<class dequeClass>::push_back(dequeClass&& val) {
    que.push_back(val);
    if(que.size() > max) {
        que.pop_front();
    }
}

void CircularDeque<class dequeClass>::push_back(const dequeClass& val) {
    que.push_back(val);
    if(que.size() > max) {
        que.pop_front();
    }
}

int CircularDeque<class dequeClass>::getMax() {
    return max;
}

void CircularDeque<class dequeClass>::setMax(int newMax) {
    max = newMax;
}

有人知道我在这里能做什么吗?

最佳答案

模板类的每个内联成员都必须以模板参数列表开头。 IE。这个:

CircularDeque<class dequeClass>::CircularDeque(int newMax) {
    max = newMax;
}

应该是这样的:

template<class dequeClass>
CircularDeque<dequeClass>::CircularDeque(int newMax) {
    max = newMax;
}

对所有课外定义执行此操作。

关于c++ - 将模板传递给双端队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18408410/

相关文章:

c++ - 重载c++模板类方法

c++ - 迭代器的 std::distance 比 RandomAccessIterator 差

c++ - otool 输出中的相对路径?

sql-server - 如何设置 Microsoft Word 使用 Web 服务使用 SQL Server 数据库中的数据填充某些字段?

c++ - 当函数返回由模板类型和另一个类型组成的类型时,模板参数推导

c++ - 使结构接受任何类型而不是 float

c++ - 调用和打印函数,它们在C++中返回数组

c++ - 在 OpenGL c++ 项目中使用资源中的 .tga (targa) 文件

c++ - 模板函数指针

c++ - 解决困难的不完整类型错误