C++ 如何初始化类模板构造函数中的向量成员变量

C++ 如何初始化类模板构造函数中的向量成员变量,c++,templates,vector,constructor,stl,C++,Templates,Vector,Constructor,Stl,我试图初始化类模板构造函数中的向量成员变量。我得到的'T'并没有引用来自编译器的值错误,因为T引用了一个类,所以我不能用这种格式做我想做的事情。请问构造器的正确格式是什么?我猜我需要将T转换为const val_类型,根据 看起来您正在尝试使用类型为T的对象初始化向量,因此请使用以下方法: PeripheralSystem(uint32_t numPeripherals = 0) : peripherals(numPeripherals, T()) {}; 看起来您正在尝试使用类型为T的对象初

我试图初始化类模板构造函数中的向量成员变量。我得到的'T'并没有引用来自编译器的值错误,因为T引用了一个类,所以我不能用这种格式做我想做的事情。请问构造器的正确格式是什么?我猜我需要将T转换为const val_类型,根据


看起来您正在尝试使用类型为T的对象初始化向量,因此请使用以下方法:

PeripheralSystem(uint32_t numPeripherals = 0) : peripherals(numPeripherals, T()) {};

看起来您正在尝试使用类型为T的对象初始化向量,因此请使用以下方法:

PeripheralSystem(uint32_t numPeripherals = 0) : peripherals(numPeripherals, T()) {};

如果要使用默认值初始化所有元素,请使用以下表单:

PeripheralSystem(uint32_t numPeripherals = 0) : peripherals(numPeripherals, T() ) {};
您可以忽略该参数,std::vector构造函数在c++11之前将T作为该参数的默认值,或者有一个构造函数只接受大小,因为:

// until c++11
explicit vector( size_type count, 
                 const T& value = T(),
                 const Allocator& alloc = Allocator());
// since c++11
vector( size_type count, 
             const T& value,
             const Allocator& alloc = Allocator());
explicit vector( size_type count );

所述,如果要使用默认值初始化所有元素,请使用以下表格:

PeripheralSystem(uint32_t numPeripherals = 0) : peripherals(numPeripherals, T() ) {};
您可以忽略该参数,std::vector构造函数在c++11之前将T作为该参数的默认值,或者有一个构造函数只接受大小,因为:

// until c++11
explicit vector( size_type count, 
                 const T& value = T(),
                 const Allocator& alloc = Allocator());
// since c++11
vector( size_type count, 
             const T& value,
             const Allocator& alloc = Allocator());
explicit vector( size_type count );

所述,如果目的是使向量具有numPeripherals元素的初始大小,则使用

PeripheralSystem(uint32_t numPeripherals = 0) : peripherals(numPeripherals) {};
现在,外围设备将初始化Numperipearals值,如果T是T的类类型实例,这是默认初始化。

如果目的是使向量具有Numperipearals元素的初始大小,则使用

PeripheralSystem(uint32_t numPeripherals = 0) : peripherals(numPeripherals) {};

现在,外围设备将初始化numPeripherals值,如果T是T的类类型实例,这是默认初始化。

您到底想做什么?默认构造NumperiPerals对象?只要从构造函数中删除,T就可以修复它,如果我猜对了你的意图的话。@DrewDormann不适用于c++11是的,谢谢,构造一个包含NumperiPerals数量的T类对象的向量。@Slava是吗?还有一个构造函数只需要一个大小。你到底想做什么?默认构造NumperiPerals对象?只要从构造函数中删除,T就可以修复它,如果我猜对了你的意图的话。@DrewDormann不适用于c++11是的,谢谢,构造一个包含NumperiPerals数量的T类对象的向量。@Slava是吗?仍然有一个构造函数只接受一个大小。