【发布时间】:2018-03-16 10:42:17
【问题描述】:
我有 SmallClass 和 BigClass 的课程。 BigClass 作为 SmallClass 的对象的私有属性。我读过初始化列表,但问题是我无法预测需要传递给SmallClass 的构造函数的值。代码如下所示:
class SmallClass {
public:
SmallClass(int);
private:
int boo;
}
SmallClass::SmallClass(int i) {
boo = i;
}
class BigClass {
public:
BigClass();
private:
SmallClass sc; // I guess this calls the constructor (and does not compile)
};
BigClass::BigClass() {
int foo;
/* Do stuff. I end up with a "foo" having a non predictable value. */
sc = SmallClass(foo); /* Is there a way to do something like this? */
}
【问题讨论】:
-
什么是
do stuff?而为什么foo的计算不能进入does stuff的小效用函数呢? -
@StoryTeller 我能想到一个例子——
BigClassctor 调用一些外部 API,返回foo和bar,我们想将foo传递给SmallClass和 @987654335 @别处 -
@Kos - 这一切都很好。但这是 OP 需要包含的一个细节,让人们知道他们最好避免沿着这些思路回答。为每个人节省不少时间(包括 OP)。
-
您是否尝试过创建一个“做事”的函数,然后在初始化列表中为
SmallClass构造函数调用它?喜欢BigClass::BigClass() : sc(DoStuff()) {}? -
@StoryTeller 抱歉,如果问题缺少上下文。我试图将它与我正在尝试的完全隔离。
BigClass有更多成员,其中一个是一个对象,其状态在BigClass的构造函数中以随机方式改变(就像一副纸牌)。事情就在设置foo的值之前,我需要读取所述纸牌的状态(并在读取时更改它)。
标签: c++ object constructor initialization initializer-list