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 的指针。
不过,您可以做的是构造一个向量 Descriptor
s 正是您现在的做法。
然后,使用指向 Descriptor
向量中各个值的指针初始化 Option
向量。
只要第一个向量保持不变,这就会起作用。
我正在编写一个小型命令行解析库,您可以静态描述选项:
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 的指针。
不过,您可以做的是构造一个向量 Descriptor
s 正是您现在的做法。
然后,使用指向 Descriptor
向量中各个值的指针初始化 Option
向量。
只要第一个向量保持不变,这就会起作用。