私人部件I具有例如以下代码:初始化的std ::阵列通过构造
#include <iostream>
#include <array>
class Base {
public:
Base() : mA(std::array<int,2>()) {}
Base(std::array<int,2> arr) : mA(arr) {}
Base(/* what to write here ??? */);
private:
std::array<int,2> mA;
};
int main()
{
std::array<int,2> a = {423, 12}; // Works fine
Base b(a); // Works fine
Base c({10, 20}); // This is what I need.
return 0;
}
如何应该定义构造以允许初始化与内部“主”上面的第三行所示?一般来说,我需要一个可配置的(在编译/运行时间的长度)结构,它允许使用数字列表(如{1,2,3}或(1,2,3)或类似的东西)进行初始化,而不需要元素 - 按元素复制。为了简单起见,我选择了std :: array,但是恐怕它可能不适用于这种初始化。你会推荐什么容器?
感谢, 克斯特亚
我不认为这是可能与使用'{'和'}'因为这种类型的初始化它是一个语言特性而不是函数或其他东西,所以你不能“模拟”它 – SingerOfTheFall
有趣的是,'Base c({10,20});'与GCC 4.8(不适用于4.7)和Clang 3.4一起工作。 – Ricky65