我在C ++中有以下课程:
class IntStack
{
private:
int *stackArray;
int stackSize;
int top;
public:
IntStack(int); // Constructor
// rest of the
// member function
};
我在类外定义了构造函数为:
IntStack::IntStack(int size)
{
stackArray = new int[size];
stackSize = size;
top = -1;
}
错误在这里是:
initializing argument 1 of 'IntStack::IntStack(int)
我创建了与以下类相同的实例:
cout << endl << "Enter size of Stack: ";
cin >> stackCapacity;
IntStack stack = new IntStack(stackCapacity);
错误在这里是:
invalid conversion from 'IntStack*' to 'int' [-fpermissive]
如何解决这些错误?
最佳答案
new IntStack(stackCapacity);
在堆上为IntStack
分配空间,并返回指向新分配的内存的指针。然后,您尝试将此指针放入您的IntStack
变量。
将stack
更改为指针:
IntStack *stack = new IntStack(stackCapacity);
或者不要在堆上分配内存:
IntStack stack(stackCapacity);