2015-12-09 69 views
3
struct Foo 
{ 
    std::vector<int> vec = {5, 123}; 
}; 

上述代码使用两个元素(5和123)初始化矢量。我如何调用需要大小和初始值的构造函数 - 相当于std::vector<int> vec(5, 123)类定义中的调用成员构造函数

+0

有什么错'VEC(5,123)'? – Default

+2

@Default它在类定义中不起作用。 – rozina

回答

4

您可以使用此形式,其std::initializer_list构造函数不参与重载决议:

std::vector<int> vec = std::vector<int>(5, 123); 
+1

这是保证调用构造函数而不是复制构造函数吗?我问,因为我的嵌入式编译器发出警告,当我使用这种语法的类具有删除拷贝构造函数。 – rozina

+0

@rozina在你的例子中,复制构造函数不会被删除。一般来说,由于复制的影响,不应该进行复制。但是这仍然需要该类型是可复制的,这就是为什么如果该类型不可复制,它会失败(不警告,失败)。 – juanchopanza

+0

因此,让我们说我有一个类删除复制构造函数和一个构造函数,它需要两个整数和一个构造函数,它需要std :: initializer_list 。我如何在类定义中调用带有两个整数的构造函数? – rozina

相关问题