我正在创建一个从STL库继承队列的新类.该类的唯一补充是向量.此向量将具有相同的队列大小,并将存储一些整数值,这些值将对应于队列中的每个对象.
现在,我想覆盖pop()和push(),但我只是想为父类的方法添加更多功能.
恩.当在队列对象上调用pop()时,我还想从向量中弹出一个对象.当在队列对象上调用push()时,我还想在向量中插入一个新对象.
我怎么做???
#include <iostream>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
template <typename type>
class CPU_Q : public queue<type>
{
public:
vector<int> CPU_TIME;
void increaseTime()
{
for(int ndx = 0; ndx < CPU_TIME.size(); ndx++)
{
CPU_TIME[ndx]++;
}
}
void push(type insertMe)
{
//This is what I want to do
super::push(); // or queue::push(); maybe?
CPU_TIME.push_back(0);
}
void pop()
{
//Something very similar to push()
}
}
Run Code Online (Sandbox Code Playgroud)
许多人提前感谢
- 三
你问过:
void push(type insertMe){
//This is what I want to do
super::push(); // or queue::push(); maybe?
CPU_TIME.push_back(0);
}
Run Code Online (Sandbox Code Playgroud)
那会更像是:
void push(type insertMe) {
queue<type>::push(insertMe);
CPU_TIME.push_back(0);
}
Run Code Online (Sandbox Code Playgroud)
除了你可能想通过const引用接受参数:
void push(type const &insertme) {
queue<type>::push(insertMe);
CPU_TIME.push_back(0);
}
Run Code Online (Sandbox Code Playgroud)
也就是说,标准的容器类并不是真正设计用于继承(例如它们没有虚拟的dtors),所以你必须小心这一点 - 例如当你销毁它时,你需要静态type为派生类型; 如果(例如)你通过指向基类的指针销毁一个行为,你将获得未定义的行为.