c++ - 在向量声明中初始化对象

c++ - Initialize objects inside vector declaration

我正在编写一个小型命令行解析库,您可以静态描述选项:

std::vector<Args::Descriptor> description{
    {UNKNOWN, 0,'h' , "help", Args::None, "print this help"}
};

在我的库中,

struct Descriptor {
  const uint option;
  const int  type;
  const char shortopt;
  const char* const longopt;
  const CheckArg check_arg; // Function pointer
  const char* help;
};

然后Descriptor用来初始化一个class:

Option(const Descriptor *descriptor)
{ … }

我可以通过初始化向量中的选项 class 来删除描述符 structure 吗?

std::vector<Args::Option> options{
    {UNKNOWN, 0,'h' , "help", Args::None, "print this help"}
};

我的 Option 构造函数应该有什么签名?假设描述符 class 从代码中完全消失以简化它。

非常感谢:D

这行不通。 Option 的构造函数的参数是指向 Descriptor 的指针。 Descriptor 必须来自某个地方。您不能使用 class 本身的实例初始化指向 class 的指针。

不过,您可以做的是构造一个向量 Descriptors 正是您现在的做法。

然后,使用指向 Descriptor 向量中各个值的指针初始化 Option 向量。

只要第一个向量保持不变,这就会起作用。