-3

我有一个类库,它包括来自另一个类 Shelf 的成员对象shelf1。

Class Shelf 有几个变量,比如:

class Shelf {
int height;
int width;
int materialType;
String shelfName;
}

现在在库中,我想在库声明中初始化成员对象shelf1:

Shelf shelf1{100, 200};
Shelf shelf2{100, "fiction"};

它们可以工作吗?列表初始化如何对变量的顺序起作用?

[更新] 这些代码是为了解释我的问题(我在现实世界中确实有类似的代码。但是放在这里太复杂了。所以我简化了我的问题)。

4

1 回答 1

3

如果你的类是一个聚合类,那么变量会根据你类中的声明顺序进行初始化。要使您的类成为聚合(并且能够使用此类直接列表初始化),其中一个要求是所有成员都必须是public(感谢@Praetorian 捕捉到这一点),否则您的类不是聚合并且代码获胜不编译。所以,假设成员是public

Shelf shelf1{100, 200}; 

height100和初始化。width_200

Shelf shelf2{100, "fiction"};

是编译时错误,因为第二个成员width不是 C 字符串。

更多细节在这里

于 2015-05-07T17:53:21.617 回答