質問: 0;i < 3;i++) { cout << "s1をポップする:" << s1.pop(ch) ; cout << ' ' << ch << '\n'; } return 0; } ``` 実行 ``` stck[0][0]a stck[0][1]m tosの値+前0 tosの値+後1 stck[1][0]e stck[1][1]q tosの値+前1 tosの値+後2 stck[2][0]q stck[2][1]p tosの値+前2 tosの値+後3 tosの値-前3 tosの値-後2 stck[2][0]6 stck[2][1] s1をポップする:6 tosの値-前2 tosの値-後1 stck[1][0] stck[1][1] s1をポップする: tosの値-前1 tosの値-後0 stck[0][0] stck[0][1]・ s1をポップする: ・ ```
回答: this->stckをコンストラクタでnewして、デストラクタでdeleteする必要があるかと思います。 今のコードですとpush()で**ローカル変数**のstckをnewして最後にdeleteで破棄しているので、 何も操作していないのと同じ状態です。 対してpop()はthis->stckを見に行ってしまっていて、ここはここでメモリを確保していますが、 0埋めしているわけではないため、入っているのはゴミデータが返ってきているのだと思います。