c++ - 堆对象成员函数访问

c++ - Heap object member function access

我不太确定我应该问哪个问题,所以我会去哪里弹出错误。

我正在开发一个程序,用于将报价数据从 Interactive Brokers 流式传输到 MySQL 数据库中。为了消除流 dl 速度和 MySQL 写入速度之间的差异可能出现的任何瓶颈,我正在尝试实现一个队列 class 来临时存储 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)

当你声明 TickQueue 时,你像这样在里面放了一个成员:

std::queue<Tick> *tickQueue;

也就是你说的TickQueue'has-a'queue<Tick>里面

相反,像这样声明 TickQueue

class TickQueue : public std::queue<Tick> {
}; // TickQueue

现在你说的是TickQueue'is-a'queue<Tick>,并且继承了其中的所有方法