我正在尝试在类模板的构造函数中初始化 vector 成员变量。我从编译器中收到“'T'不引用值”错误,因为T引用了一个类,所以我无法使用这种格式进行操作。请问这里构造函数的正确格式是什么? (我猜我需要根据constructor将T转换为const val_type吗?)
template <class T>
class PeripheralSystem {
public:
PeripheralSystem(uint32_t numPeripherals = 0) : peripherals(numPeripherals, T) {};
virtual ~PeripheralSystem();
private:
std::vector<T> peripherals;
};
最佳答案
如果意图是让vector
的初始大小为numPeripherals
元素,则使用
PeripheralSystem(uint32_t numPeripherals = 0) : peripherals(numPeripherals) {};
现在
peripherals
将具有numPeripherals
的T
值初始化实例(如果T
是类类型,则为默认初始化)。