0

所以假设我有一个名为 donut 的类型。我想为甜甜圈创建一个构造函数,它需要 3 个参数、两个整数和一个具有两个整数作为字段的结构奶油。如果没有提供参数,我想为参数设置默认值。那么语法会如何呢?

Donut::Donut(int a=0, int b=0, cream car={0, 0})

                    : donutfield1(a), donutfield2(b), donutfield3(car) { }

这不起作用...

4

2 回答 2

2

尝试

Donut::Donut(int a=0, int b=0, cream car=cream{0, 0})

(实际上,您的代码应该在符合 C++11 的编译器上编译,但如果不是,上述内容有望有所帮助)

于 2013-10-27T21:26:23.767 回答
1

这种语法是在 C++11 中引入的(称为扩展初始化列表)。为了使您的代码与 C++03 兼容,请使用旧语法:

Donut::Donut(int a=0, int b=0, cream car = cream(0, 0)) ...

请注意,如果您的类(此处cream)提供了具有单个参数的构造函数并且不使用explicit关键字,则可以从不带任何括号或括号的参数类型的实例构造它,例如cream car = 0

于 2013-10-27T21:34:51.733 回答