如何使大括号初始化和默认值一起工作
How to make brace initialization and default values work together?
下面的代码可以运行
class A
{
public:
int i;
float f;
};
int main()
{
A a{ 1, 0.1 };
return 0;
}
但是,如果我为A的成员添加默认值,它就不起作用了
class A
{
public:
int i = 0;
float f = 3.14;
};
如何使两者协同工作?
必须定义一个默认构造函数和一个自定义构造函数,如下所示:
class A
{
public:
A() {}
A(int const _i, float const _f) : i(_i), f(_f) {}
int i = 0;
float f = 3.14;
};
现场演示
然而,正如@Kerek SB, @T.C已经提到的。在注释中,这将在c++ 14中修复,您的代码将按原样工作。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 具有默认值的引用获取函数
- 当给定默认值时,为什么此模板参数推导失败
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 格式化浮点值:返回默认值
- 如何将数组部分初始化为某个默认值?
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- 创建一个包含 c++ 默认值的环境文件
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- Switch 语句(字符串)一直选择默认值,除非其为零
- 如何使用默认值将枚举声明为 extern
- 如何在提升程序选项中设置矢量<矢量>的默认值<string>
- 如何使用默认值为构造函数中的枚举赋值?
- 变量始终在函数中重置为默认值
- 如何在C++中提供模板化函数作为另一个函数的参数,默认值?
- 将包装器与函数指针一起使用来处理参数的默认值
- 如何将std::map与没有默认构造函数的值一起使用?
- 如何使大括号初始化和默认值一起工作
- 将函数指针上的参数与默认值参数一起丢弃是否有效