C++ 错误 : array initializer must be an initializer list

标签 c++ arrays

几天来我一直在为一段代码苦苦挣扎。我在运行代码时收到的错误消息是: 错误:数组初始值设定项必须是初始值设定项列表 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++ 以及类和构造函数,所以请多多包涵。

谢谢

最佳答案

  1. 您不能使用 int 初始化数组,例如 accountStore (int size = 0) : accts(size) {}

  2. 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/

相关文章:

arrays - Ruby 中的数组切片 : explanation for illogical behaviour (taken from Rubykoans. com)

javascript - 使用 for 循环替换数组中的元素 javascript 未正确替换元素

java - 尝试编码但有问题

c++ - 模板类中的模板构造函数必须在类定义中定义?

c++ - 为什么我不能 range-for 遍历任意内容的初始化列表?

c++ - 如何处理正则表达式?

在C中创建数组列表

c++ - 将动态 C 运行时链接到 clang (windows)

c++ - 如何在 MAC OS 中使用 gethostbyname_r

java - 创建对称矩阵java VRP