C++编译报expected '{' at end of input错误但括号无缺失如何解决
错误原因分析
该编译报错和全局大括号配对无关,问题出在你给出的构造函数代码行本身不符合C++语法规范:
- 你写的代码属于带成员初始化列表的构造函数实现,C++要求该场景下初始化列表后必须紧跟用
{}包裹的构造函数体,你用分号;结尾的写法是非法的。 - 编译器读到该处分号时,仍在等待预期的
{开启函数体,直到读到整个编译单元末尾都没找到对应的{,就触发了expected '{' at end of input的报错。你检查大括号时没有意识到该处本该额外存在一对函数体大括号,才会出现“所有大括号都配对”的误判。 - 只有类内部的构造函数声明场景才能用分号结尾,例如类定义中写
Phone(double phonePrice, bool Iphone, int phoneYear);是合法的。
修复方案
根据你的开发需求二选一即可:
- 如果你是要在类内部声明构造函数,删除初始化列表部分,保留分号即可:
Phone(double phonePrice, bool Iphone, int phoneYear);
- 如果你是要给出构造函数的实现,把结尾的分号换成空函数体(或者填入你需要的构造逻辑)即可:
// 空实现的写法 Phone(double phonePrice, bool Iphone, int phoneYear) : Apple{Iphone}, price{phonePrice}, yrs{phoneYear} {} // 带内部逻辑的写法示例 Phone(double phonePrice, bool Iphone, int phoneYear) : Apple{Iphone}, price{phonePrice}, yrs{phoneYear} { // 此处可填写构造函数内部需要执行的逻辑 std::cout << "Phone实例初始化完成" << std::endl; }
内容的提问来源于stack exchange,提问作者Connor Lonergan
相关产品推荐
相关产品推荐

