构造函数定义C++

Mal*_*ikx 0 c++ constructor

我在C++中有以下类:

class IntStack
{
    private:
        int *stackArray;
        int stackSize;
        int top;

    public:
        IntStack(int);          // Constructor
        // rest of the 
        // member function
};  
Run Code Online (Sandbox Code Playgroud)

我已经将类外的构造函数定义为:

IntStack::IntStack(int size)
{
    stackArray = new int[size];
    stackSize = size;
    top = -1;
}
Run Code Online (Sandbox Code Playgroud)

这里的错误是: initializing argument 1 of 'IntStack::IntStack(int)

我创建了同一个类的实例:

cout << endl << "Enter size of Stack: ";
cin  >> stackCapacity;
IntStack stack = new IntStack(stackCapacity);
Run Code Online (Sandbox Code Playgroud)

这里的错误是: invalid conversion from 'IntStack*' to 'int' [-fpermissive]

如何理清这些错误?

sco*_*001 6

new IntStack(stackCapacity);正在为IntStack堆上的a 分配空间并返回指向新分配的内存的指针.您正试图将此指针放入您的IntStack变量中.

要么改为stack指针:

IntStack *stack = new IntStack(stackCapacity);
Run Code Online (Sandbox Code Playgroud)

或者不在堆上分配内存:

IntStack stack(stackCapacity);
Run Code Online (Sandbox Code Playgroud)