I am trying to implement a stack using an array but I receive an error.
class Stack{
private:
int cap;
int elements[this->cap]; // <--- Errors here
int top;
public:
Stack(){
this->cap=5;
this->top=-1;
};
The indicated line has these errors:
Multiple markers at this line
- invalid use of 'this' at top level
- array bound is not an integer constant before ']' token
What am I doing wrong?
In C++, the size of an array must be a constant known at compile-time. You'll get an error if that isn't the case.
Here, you have
int elements[this->cap];
Notice that this->cap
isn't a constant known at compile-time, since it depends on how big cap
is.
If you want to have a variably-sized array whose size is determined later on, consider using std::vector
, which can be resized at runtime.
Hope this helps!
You cannot use this
in the declaration like that.
this
is a constant pointer passed to non-static methods in your class. It does not exist outside of that scope.
Such array declarations need constant values/expressions for the size. You don't want that, you want a dynamicly sized container. The solution is to use a std::vector
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With