我目前正在开发一个类的项目,它要求我们实现一个整数用作堆栈的计算器。我的默认构造函数有问题,我想知道我错过了什么。
OperandStack(int stackSize)
{
if (stackSize<=0)
{cout<<"Must be positive"<<endl;}
this->capacity=capacity;
s =new double[stackSize];
t=0;
}
感谢您的帮助。
答案 0 :(得分:3)
“我的默认构造函数出现问题,我想知道我错过了什么。”
default constructor不接受任何参数,或为所有参数声明默认值。引用链接的参考文档
默认构造函数
默认构造函数是一个构造函数,可以不带参数调用(使用空参数列表定义,或者为每个参数提供默认参数)。
因此,您的实现应如下所示:
class OperandStack {
public:
OperandStack(int stackSize = 10)
// ^^^^ declare a default value
// Better use a member initializer list, instead of initializing claas
// members inside the constructor's body:
: capacity(stackSize), s(new double[stackSize]), t(0) {
if (stackSize<=0) {cout<<"Must be positive"<<endl;}
// ^^^^ Better use an exception instead of this
// output statement (it's OK for basic debugging)
}
};