我想创建一个构造函数,它类似于int
数组构造函数:int foo[3] = { 4, 5, 6 };
但我想像这样使用它:
MyClass<3> foo = { 4, 5, 6 };
我班上有一个私人n
大小的数组:
template<const int n=2>
class MyClass {
public:
// code...
private:
int numbers[n];
// code...
};
答案 0 :(得分:18)
您需要一个接受std::initializer_list
参数的构造函数:
MyClass(std::initializer_list<int> l)
{
...if l.size() != n throw / exit / assert etc....
std::copy(l.begin(), l.end(), &numbers[0]);
}
TemplateRex发表评论......
您可能想要警告such constructors are very greedy并且很容易导致不受欢迎的行为。例如。
MyClass
不应该让构造函数使用int
个。{/ p>
......并且很可能是一个过度活跃的主持人可能会删除它,所以这里相对安全。 : - )