我在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);

08-28 09:13