-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 中时,它不会打印出正确的输入。任何人?

4

1 回答 1

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
   }

}
于 2013-02-28T17:13:53.093 回答