在vector声明中初始化对象

Initialize objects inside vector declaration

本文关键字:初始化 对象 声明 vector      更新时间:2023-10-16

我正在写一个小的命令行解析库,你可以静态地描述选项:

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

where in my lib

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

然后使用描述符初始化类:

Option(const Descriptor *descriptor)
{ … }

我可以移除我的描述符结构通过初始化Options 内的vector吗?

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

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

D

这行不通。Option的构造函数的参数是一个指向Descriptor的指针。Descriptor肯定来自某个地方。不能用类本身的实例初始化指向类的指针。

你能做的,是构造一个Descriptor的向量,就像你现在做的那样。

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

只要第一个向量保持不变,