几天来我一直在为一段代码苦苦挣扎。我在运行代码时收到的错误消息是:
错误:数组初始值设定项必须是初始值设定项列表
accountStore(int size = 0):accts(大小){}
这里似乎还有其他人有类似的问题,但不幸的是我无法应用他们的解决方案(要么不起作用要么不适用)。
我只是想尝试创建一个类“prepaidAccount”的容器类(数组,不能使用 vector ),但我无法让容器类“storeAccount”的构造函数部分工作。请参阅下面的代码片段:
class prepaidAccount{
public:
//prepaidAccount ();
prepaidAccount(string newPhoneNum, float newAvailBal) : phoneNumber(newPhoneNum), availableBalance (newAvailBal){} //constructor
double addBalance(double howMuch) {
availableBalance = howMuch + availableBalance;
return availableBalance;
}
double payForCall(int callDuration, double tariff) {
callDuration = callDuration/60; //convert to minutes
double costOfCall = callDuration * tariff;
if (costOfCall > availableBalance) {
return -1;
}
else {
availableBalance = availableBalance - costOfCall;
return costOfCall;
}
}
void setAvailBal(int newAvailBal) {availableBalance = newAvailBal;}
float getAvailBal() {return availableBalance;}
void setPhoneNum(string newPhoneNum) {phoneNumber = newPhoneNum;}
string getPhoneNum() const {return phoneNumber;}
private:
string phoneNumber;
float availableBalance;
};
class accountStore { //made to store 100 prepaid accounts
public:
accountStore (int size = 0) : accts(size) { }
....
private:
prepaidAccount accts[100];
}
在 main 中,我只需调用 accountStore Account;
绝对欢迎任何帮助。我最近开始学习 C++ 以及类和构造函数,所以请多多包涵。
谢谢
最佳答案
您不能使用
int
初始化数组,例如accountStore (int size = 0) : accts(size) {}
。prepaidAccount
没有默认构造函数,您必须像这样编写成员初始化列表,accountStore(int size = 0):accts{prepaidAccount(...), prepaidAccount(...), ...} { }
数组有 100 个元素,这不是一个实用的解决方案。
作为一个建议,想想std::vector
,它有一个 constructor用具有指定值的元素的特定计数构造。比如,
class accountStore {
public:
accountStore (int size = 0) : accts(size, prepaidAccount(...)) { }
....
private:
std::vector<prepaidAccount> accts;
};
关于C++ 错误 : array initializer must be an initializer list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35596752/