2015-01-25 1 views
0

내 제목이 의미가 있는지 확실하지 않습니다. C++로 큐 클래스를 구현하려고합니다. 다음은 내 q.cpp 클래스 내 출력 클래스 (MAIN.CPP)에서 이제 C++의 함수를 통해 클래스에 대한 새 핸들을 만들 때

#include "q.h" 

    q::q() 
    { 
     for(int i = 0; i < q::QUEUE_SIZE; i++) 
     { 
      q::data[i] = '0'; 
     } 
     q::front = q::rear = -1; 
     printf(" YEA QUEUE HAS BEEN CREATED "); 
    } 

    q* q::createQueue() 
    { 
     return new q; 
    } 

, 내가 createQueue() 함수 호출을 통해 새로운 큐를 만들 수 있도록하려면 현재에 대한 핸들을 반환 지금까지입니다 이

q* firstQueue = createQueue(); 
q* secondQueue = createQueue(); 

내 주요 생성자 Q를 (생각했다)와 같은 큐 클래스 객체

뭔가 개인 있어야하고 createQueue은 다음과 같은 내 QH 파일이 있어야한다 공장 같은 것을 행동해야? 다음

#ifndef Q_H 
#define Q_H 
#include <stdio.h> 

class q 
{ 
public: 

    void destroy_queue(q* currentQueue); 
    void enque_byte(q* currentQueue,unsigned char b); 
    unsigned char deque_byte(q* currentQueue); 
    static q* createQueue(); 
private:  
    static const int QUEUE_SIZE = 2048; 
    unsigned char data[QUEUE_SIZE]; 
    int front, rear; 
    q(); 
}; 

#endif // Q_H 

그리고 내가

를 호출하여 엔큐, 디큐 작업을 할 수있을 것입니다 방법과는

enqueue(firstQueue,5); 
dequeue(firstQueue); 
enqueue(secondQueue,10); 
.. 
.. 

같은 큐의 수에 대기열에서 작업을하고 물체를 사용하지 그들에게 전화하기

firstQueue->enqueue(...) 

나는 약간의 조직과 혼돈 스럽다. 내 코드. 누군가가 그런 구조를 어떻게 성취 할 수 있는지에 대한 통찰력을 줄 수 있기를 바라십니까?

+0

왜 공장 기능이 필요합니까? 큐를 인스턴스화하는 것이 잘못된 이유는 무엇입니까? 'q firstqueue, secondqueue; ' – juanchopanza

+0

그래, 내가 그 큐 객체에 대한 핸들을 반환하는 createQueue() 함수를 갖기를 바라고있는 C++ 프로그래밍 문제에 대해 언급하는 것을 잊었다! – Htlcs

+0

그 도전에 대한 링크가 있습니까? 'createQueue' 함수를 필요로하는 몇 가지 추가적인 요구 사항이 있거나 여러분이 요구 사항을 잘못 이해했거나 C++이 어떻게 보이는지에 대한 잘못된 이해를 가진 사람들이 작성한 것입니다. –

답변

0

당신은 그러나,이 모든 훨씬 이해가되지 않습니다

void enqueue(q* obj, int x) { 
    obj->enqueue(x); 
} 

같은 간단한 래퍼를 쓸 수 있습니다; C++ 관용구는 객체와 메소드를 사용하는 것이지만,이 관용구가 잘 작동하지 않는 경우 (예 : 다중 메소드), 다음과 같이하면 그 다음과 대결하는 것이 훨씬 쉽습니다.

관련 문제