You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

g++编译报错:DollarAmount类无匹配花括号初始化列表构造函数

错误原因

你定义的DollarAmount类仅公开了一个需要传入两个int64_t参数(分别对应美元数、美分数)的构造函数,但在类内部的addInterest成员函数中,实例化interest对象时仅传入了1个计算得到的总便士数值,参数数量与构造函数要求不匹配,因此触发编译报错。

修复方案(二选一即可)

方案1:新增单参数构造函数(改动最小)

在DollarAmount类的public权限块中,新增一个直接接收总便士数的构造函数即可:

class DollarAmount {
public:
    // 原有双参数构造函数保留
    explicit DollarAmount(int64_t dollars, int64_t cents) : amount{dollars * 100 + cents} { }
    // 新增单参数构造函数,直接传入总便士数初始化
    explicit DollarAmount(int64_t totalPennies) : amount{totalPennies} {}

    // 其余类成员代码无需改动
    // ...
};

方案2:修改addInterest内的实例化逻辑(无需改动构造函数)

把addInterest函数中创建interest对象的代码,拆分成两个参数传给现有构造函数:

void addInterest(int rate, int divisor) {
    int64_t totalInterestPennies = (amount * rate + divisor / 2) / divisor;
    DollarAmount interest {
        totalInterestPennies / 100,
        totalInterestPennies % 100
    };
    add(interest);
}

内容的提问来源于stack exchange,提问作者user15194704

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:45:00