2016-06-12 4 views
0

어떤 질문을해야하는지 잘 모르겠으므로 오류가 나타나는 곳으로 가야합니다.C++ - 힙 개체 멤버 함수 액세스

Interactive Brokers에서 틱 데이터를 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; 
    } 

지속성을 유지하기 위해 힙에서 초기화하기로했습니다. 그러나 이것이 최상의 구현이 아닐 수도 있다는 느낌이 들었습니다.

또한 size()가 tq의 멤버 함수가 아니므로 tq.size()에 액세스 할 수 없습니다. 새로운 객체를 구축하고 그것의 기본 구조 (이 경우 표준 : 큐)

답변

0

당신이 TickQueue 선언의 멤버를 상속이 할 수있는 방법이 있나요, 당신은 이런 식으로 내부 구성원을 넣어 :

std::queue<Tick> *tickQueue;

즉, TickQueue '은 -입니다.

대신,이 같은 TickQueue을 선언

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

이제 TickQueuequeue<Tick> 'A-이다', 그리고 그 모든 메소드를 상속한다는 것입니다.

+0

완벽한, 감사합니다! C++에서 OOP를 새로 고치는 데 필요한 빠른 리소스를 알고 있습니까? –

+0

빠른? 미안, 안돼. 내가 한 모든 것들은 오래 전이었고, 매우 빨리 ... –

+0

그래, 가장 좋은 자료는? –