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

时间:2016-09-03 13:19:32

标签: c++ vector c++14 stdvector

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

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

在我的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;
};

然后Descriptor用于初始化一个类:

Option(const Descriptor *descriptor)
{ … }

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

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

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

非常感谢:D

1 个答案:

答案 0 :(得分:1)

这不起作用。 HKEY_USERS\S-1-5-21-1832913631-259515069-2567909844-16342_Classes的构造函数的参数是指向Option的指针。 Descriptor必须来自某个地方。您无法使用类本身的实例初始化指向类的指针。

但是,你可以做的是构建一个Descriptor的向量,正是你现在正在做的。

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

只要前进,第一个矢量保持不变,这将起作用。