gpt4 book ai didi

c++ - 结构初始化

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:14:38 24 4
gpt4 key购买 nike

static struct Args {
char* arg1;
unsigned arg2;
unsigned arg3;
char* arg4;
} arg;

我的程序将命令行参数保存到一个结构中。有时所有成员都已确定……有时只有其中几个。

在只设置 arg1 的情况下,最佳做法是如何处理其余成员?

谢谢。

最佳答案

我会使用带标记的可选类型,例如Boost.Optional .虽然您可以将 NULL 用于指针,但您也可以使用 optional<char *>以及 optional<int> .

如果您坚持使用 NULL,您可能会认为某些 int 值不是合法输入(例如 (unsigned)-1);如果用户提供它们,您可以拒绝它们,并使用它们来表示“未提供选项”。

可选包装器的本质是:选项是否存在的 bool 标志,以及包装的数据类型,例如:

template <class T>
struct optional<T> {
T val;
bool none;
bool have() { return !none; }
optional() : none(true)
optional(T const& val) : val(val),none(false) {}
void operator=(T const& t) { none=false; val=t; }
// etc; make none and val private if you wish
};

关于c++ - 结构初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1436219/

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