gpt4 book ai didi

c++ - 成员初始化列表中的条件运算符

转载 作者:可可西里 更新时间:2023-11-01 15:07:10 26 4
gpt4 key购买 nike

假设我有这个类:

class foo
{
public:
foo() { }
foo(const std::string& s) : _s(s) { }

private:
std::string _s;
};

它是另一个类的成员:

class bar
{
public:
bar(bool condition) :
_f(condition ? "go to string constructor" : **go to empty ctor**)
{
}

private:
foo _f;
};

bar 的成员初始化列表中初始化 _f 时,我想根据 选择调用 foo 的哪个构造函数条件

我可以用什么代替 go to empty ctor 来完成这项工作?我想到了放foo(),还有别的办法吗?

最佳答案

条件运算符的结果始终是一个固定类型,在编译时通过找到两个选项都可以转换为的通用类型来确定。 (确切的规则有点复杂,但通常使用它通常“做正确的事”。)

在您的示例中,最简单的做法是让该类型成为临时 foo,然后使用复制构造函数在 bar 中初始化 _f

您可以按如下方式执行此操作。

_f( condition ? foo("string") : foo() )

关于c++ - 成员初始化列表中的条件运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2206366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com