-1

strtok を使用して文字列を分割し、スタックにプッシュしようとしています。整数または「+」または「-」記号を指定できます。問題をプッシュ関数に追跡しました.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 に答える