他の人がこの問題の原因をすでに説明しているので、解決するための可能な解決策は次のとおりです。コンパイル時に配列サイズがわからない可能性があり、割り当てによって使用が制限される可能性があるためstd::vector<int>
、ポインター実装の使用を検討してください。
#include <algorithm>
class Stack{
private:
int cap;
int* elements; // use a pointer
int top;
public:
Stack(){
this->cap=5;
this->top=-1;
elements = new int[this->cap];
}
Stack(const Stack& s)
: cap(s.cap) , top(s.top), elements(NULL)
{
if(cap > 0) {
elements = new int[cap];
}
std::copy(s.elements , s.elements + cap, elements );
}
Stack& operator=(Stack s) {
swap(s, *this);
return *this;
}
~Stack() {delete [] elements;}
friend void swap(Stack& first, Stack& second)
{
using std::swap;
swap(first.top, second.top);
swap(first.cap, second.cap);
swap(first.elements, second.elements);
}
};