我在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]
如何理清这些错误?
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)
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |