我不太确定我应该问哪个问题,所以我会去找出错误的位置。
我正在开发一个程序,用于将Interactive Brokers中的tick数据流式传输到MySQL DB中。为了消除因流dl速度和MySQL写入速度之间的差异而可能出现的任何瓶颈,我试图实现一个临时存储Tick对象的队列类。代码:
TickQueue::TickQueue()
{
tickQueue = new std::queue<Tick>;
}
TickQueue::~TickQueue()
{
delete tickQueue;
}
void TickQueue::add(Tick t)
{
tickQueue->push(t);
}
int main()
{
time_t dt = time(0);
struct tm currTime;
localtime_s(&currTime, &dt);
TickQueue tq;
for (int i = 0; i < 5; ++i)
{
Tick tTick("fx", 1.2151, "SYM", i, currTime); tq.add(tTick);
}
if (tq.size() == 5) { cout << "success" << endl; }
return 0;
}
为了保持持久性,我决定在堆上初始化它。但是,我觉得这可能不是最好的实现。
我也无法访问tq.size(),因为size()不是tq的成员函数。有没有办法构造一个新对象并让它继承其底层结构的成员(在这种情况下为std :: queue)
答案 0 :(得分:0)
当您声明TickQueue
时,您会在其中放置一个成员:
std::queue<Tick> *tickQueue;
也就是说,你说TickQueue
'里面有一个'queue<Tick>
。
相反,请像这样声明TickQueue
:
class TickQueue : public std::queue<Tick> {
}; // TickQueue
现在你说TickQueue
'是一个'queue<Tick>
,并且继承了所有方法。