如何升级静态std::可选


class Child: public Base {.....}
class Child
{
static std::optional<Base>& Child::GetBaseInstance()
{
static std::optional<Base> instance = std::make_optional<Chid>; \Does not work. Please help
return instance;
}
}

我试图返回一个实例,但它的基类型为std::optional。我还应该返回std::optional&或std::可选<基础&gt;如果我试图传递相同的引用?

不能将std::optional用于引用。相反,可以使用原始指针、std::reference_wrapperboost::optional(适用于引用(。

话虽如此,您的代码片段中还有另一个缺陷:当从Child实例构建std::optional<Base>时,它会受到对象切片的影响。你可以在这里阅读更多。

请注意,您还可以使用std::unique_ptrstd::shared_ptr的类似nullptr的状态来指示对象的附加布尔属性。在处理类层次结构时,使用这些智能指针通常是有意义的,而std::optional非常适合值类型对象。

相关内容

  • 没有找到相关文章

最新更新