【发布时间】:2018-07-22 09:39:32
【问题描述】:
我正在编写一个具有显式构造函数的类,该构造函数采用const char* 参数。对于这个问题的意图和目的,它看起来像这样:
struct Symbol
{
Symbol()=default;
explicit Symbol(const char*);
};
现在我想写一个用于初始化数组(数组/向量/列表-我不关心确切类型)的示例,并且我需要示例尽可能清晰和简洁。理想情况下应该是这样的:
Symbol symbols[] = { "a", "b", "c"};
由于显式关键字而无法编译,我不准备将构造函数设为隐式。
我怎样才能完成这项工作,重点是使示例代码尽可能具有表现力?
编辑: 在 Caleth 的帮助下,我选择了 Bolov 的解决方案:
struct Symbol
{
Symbol();
explicit Symbol(const char*);
template <class... Args>
static std::array<Symbol, sizeof...(Args)> Array(Args... args)
{
return {Symbol{args}...};
}
};
int main()
{
auto symbols = Symbol::Array("a", "b", "c");
}
【问题讨论】:
标签: c++ c++11 aggregate-initialization explicit-constructor