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>
,并且继承了其中的所有方法
我不太确定我应该问哪个问题,所以我会去哪里弹出错误。
我正在开发一个程序,用于将报价数据从 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>
,并且继承了其中的所有方法