2013-02-28 5 views
-1

문자열을 분할하고 스택으로 밀어 strtok 사용하려고합니다. 정수 또는 '+'또는 '-'부호가 될 수 있습니다. 내가 푸시 함수에 문제를 추적하고 void ** a 배열에 대한 void 포인터입니다. 내가 std::Stack을 사용하지 않는 이유 cout << getVP(a) << " " ;배열 void 포인터

내 getVP 기능이

int Stack::getVP (void* a) const 
{ 
return *(static_cast <char *>(a)); 
} 

부탁하지 마십시오했을 때

그것은 쓰레기 값을 출력합니다. 나는 그렇게해야 할 의무가 없다.

수정 : 내 코드에 약간의 변경을가했지만 지금은 void * temp에 저장할 때 오른쪽 입력을 인쇄하지 않습니다. 누군가?

+3

상황이 여기에 비린내가 보인다. 왜 당신은'무효 * '를 사용하고 있습니까? –

+0

* "은 정수 또는' '+' '또는' '-'signs"* 일 수 있습니다 .- 그게'void * '를 사용하는 이유가 아닙니다. – LihO

+0

강사가이 형식으로 우리에게주었습니다. – whyme

답변

0

코드는 도처에있다 :

이 코드가 올바르지 않습니다 - 코멘트 보정한다 /주의 사항은 다음과 같습니다

void Stack::push (char* temp) 
{ 
    a = new void * [MAX]; // Assume a is a member variable of type 'void **' it will 
         // be a memory leak for starters. Why not make a an array 
         // or char *. i.e. 
         // char *a[MAX]; 
         // or better string string a[MAX]; 

    if (!isFull()) 
    { 
     top = top + 1;  
     *a = temp;  // This is incorrect - should be a[top] = temp; 
         // Possibly want to duplicate temp here 

    cout << getVP(a) << " " ; // Why make this complicated function 
          // Just cout << a[lop] << endl; would do 

    ++a;      // Not needs and confuses things 
    } 

}