【发布时间】:2021-12-24 01:09:58
【问题描述】:
假设我有一个类A,它使用网络的消息。 A 类有 2 个成员 b 和 c,对应类型为 B 和 C。成员只能使用来自网络的信息进行初始化。
有没有办法在稍后初始化成员,而无需将成员的类型设为 B* 和 C*(使用 nullptr 初始化并稍后设置所需的值)?
我觉得在这种情况下设计有缺陷,但我仍然在问自己最好的做法是什么,因为我在阅读 Why should I use a pointer rather than the object itself? 后使用指针时有点迟钝?
【问题讨论】:
-
std::optional<B>和std::optional<C>怎么样? -
@FrançoisAndrieux 我是一个初学者,我不熟悉 c++ 提供的所有功能。我得查一下,但这可能正是我所要求的。
-
如果不设置会有什么问题?
-
@АлексейНеудачин 例如当 b 和 c 没有默认构造函数时
-
所以你做不到