-std = C++ 0x를 사용하여 Eclipse/gcc를 사용하여 우분투에서 개발하기.큐로 객체 조각 내기
개체 조각화에 문제가있는 것으로 보입니다. 여기서는 다른 질문에 해당하지 않습니다. 매우 간단한 기본 클래스/자식 클래스 상속 모델이 있습니다.
class Parent{
public:
Parent();
virtual ~Parent();
virtual void DoStuff() = 0;
};
class Child : public Parent{
public:
Child();
virtual ~Child();
virtual void DoStuff(); //Child can have "grandchildren"
};
내가 원하는 것은 내가 작업자 스레드에 의해 처리를 위해 이러한 개체를 저장할 수있는 큐를하는 것입니다 : 기본 클래스는 분명 아이가 구현 한 순수 가상 함수가 있습니다. 나는 포인터를 저장해야한다는 것을 알고있다. 그렇지 않으면 슬라이싱을 보장 할 수있다. 그래서,이 작업을 수행하는 클래스 ("프로세서")에서 내가 가진 :
typedef queue<Parent*> MYQUEUE; //#include <queue>
static MYQUEUE myQueue;
//Call this after creating "Child c;" and passing in &c:
void Processor::Enqueue(Parent* p)
{
myQueue.push(p);
}
void* Process(void* args) //function that becomes the worker thread
{
while(true)
{
if(!myQueue.empty())
{
Parent* p = myQueue.front();
p->DoStuff();
myQueue.pop();
}
}
return 0;
}
무엇 다음 발생하면 상속/다형성이 작동하지 않는 것처럼 프로그램이 충돌은, "순수 가상 메서드가 호출"말하는 것입니다 바르게. 나는 내가 시험 할 때 이것이 제대로 작동했기 때문에 상속이 올바르게 설정되었음을 안다 :
어떤 지침도 크게 감사하겠습니다!
디버거를 사용 해보았습니까? –