2013-02-28 1 views
-1

Я пытаюсь использовать strtok для разбиения строки и нажатия в стек. могут быть целыми или знаками «+» или «-». Я проследил проблему до функции push, а void ** a является указателем на пустоту в массиве.массив указателя void

Она выводит значение мусора, когда я сделал cout << getVP(a) << " " ;

моя getVP функция

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

Пожалуйста, не спрашивайте меня, почему я не использую std::Stack. Мне не поручено это делать, да, я должен сделать это в массиве.

отредактировал: внес некоторые изменения в мои коды, прямо сейчас, когда я храню его в void * temp, он не распечатывает правильный ввод. кто угодно?

+3

Вещи выглядят тусклыми здесь. Почему вы используете 'void *'? –

+0

* "могут быть целыми числами или символами' '+ '' или '' -''' * - это не повод для использования '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 
    } 

} 
Смежные вопросы