|
ㅡㅡ;;;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i = 1; i <= 10 ; i++)
{
Log = new TLOGBUF;
Log->n = i;
Log->msg.sprintf("%04d",i);
que->Push(Log);
}
처음 소스는 포인터만 있을뿐.. 메모리 할당이 이루어지지 않아서..
전혀 엉뚱한 곳에 데이터를 write하고 있습니다.
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(que->Count() > 0)
{
Log2 = (TLOGBUF*) que->Pop(); //에러
ListBox1->Items->Add(IntToStr(Log2->n)+Log2->msg);
}
}
TQueue는 데이터를 push,pop 할때 .. void * 으로 이루어집니다.
(void 형에 대해서 한번 책을 읽어보실걸 권합니다.)
컴파일은 해보지 않았지만..
아마 위와 같이 하시면 될겁니다.
하안인 님이 쓰신 글 :
: : : void __fastcall TForm1::Button2Click(TObject *Sender)
: : : {
: Log2 = new TLOGBUF; //추가
: : : if(que->Count() > 0)
: : : {
: : : Log2 = que->Pop(); //에러
: : : ListBox1->Items->Add(IntToStr(Log2->n)+Log2->msg);
: : : }
: : : }
: : :
: 알려주신대로 추가를 해도 컴파일시 Log2 = que->Pop()에서
: cannot convert 'void *' to 'TLOGBUF *' 라는 메시지는
: 계속 나오는데요.
: 다시 한번만 더 알려주시면 안될까요?
: 부탁드립니다...
|