我更像是一个硬件人,但我使用的芯片设计工具需要我编写一些 C++ 代码。我不熟悉面向对象的编程;虽然我对 C 有很好的掌握。我要问的是如何构造我的类(称为cq
)以完成手头的任务。
我希望能够生成指定数据类型和指定大小的队列(生成后不应更改)。理想情况下,这将像这样完成......
my_queue = new cq(uint8_t, 6);
...这将生成一个由六个 8 位无符号整数组成的数组(或向量)。
然后,我想要一种方法来将元素插入到末尾并返回队列头部的元素,如下所示。
uint8_t front;
front = my_queue.advance(28);
我需要什么样的结构来完成这个?由于数据类型是可变的,我需要模板吗?或者我应该有一个泛型类并让每个数据类型的类继承其结构?
谢谢!
编辑:使用以下答案的输入,我想出了以下内容:
template <class type>
template <class size>
class CQ {
private:
// Allocates a queue with type and size
// specified by template arguments.
std::queue<type> cycle_queue(size, 0);
public:
// Inserts input to the end of the queue;
// removes and returns the front element.
type advance(type in){
type out = cycle_queue.front();
cycle_queue.push_back(in);
cycle_queue.pop_front();
return out;
}
}
然后我的问题变成了......我如何在我的主 C++ 程序中实例化它?我试过这个,但没有奏效:
CQ<uint8_t><6> my_queue;
my_queue.advance(28);
再次感谢!