gpt4 book ai didi

c++ - 默认初始化一个有很多 bool 值的类?

转载 作者:行者123 更新时间:2023-11-30 01:14:54 28 4
gpt4 key购买 nike

注意:我不能使用 c++11。

我有一个包含许多 bool 值和一个字符串的类。预计将在堆栈上使用。现在我用这个:

class Lorem: public Ipsulum {
public:
Lorem() :
has_foo(0),
is_bar(0),
is_on(0),
is_a_pony(0),
has_car(0),
foorbar() // do I need this line if "foobar" is std::string?
{ }

private:
bool has_foo;
bool is_bar;
bool is_off;
bool is_a_pony;
bool has_car;
std::string foobar;
}

问题 1:有没有办法更简单地做到这一点?

问题 2:我必须在列表中包含“foorbar”初始值设定项吗?

最佳答案

Is there a way to do this simpler?

我猜你的意思是,有没有办法避免单独初始化每个 bool?您可以将它们放在一个结构中,然后对其进行值初始化:

Lorem() : flags() {}

private:
struct Flags {
bool has_foo;
bool is_bar;
bool is_off;
bool is_a_pony;
bool has_car;
} flags;

或者将它们包装在强制值初始化的东西中

template <typename T> struct value_init {
value_init() : value() {}
T value;
};

value_init<bool> has_foo;

或者可能使用 std::bitset 或类似的。

Do I have to include the "foorbar" initializer in the list?

没有。这是一个带有默认构造函数的类类型;无论您是显式对其进行值初始化还是将其保留为默认初始化,都将使用该构造函数。

关于c++ - 默认初始化一个有很多 bool 值的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29430166/

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