我正在尝试在类模板的构造函数中初始化 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将具有numPeripheralsT值初始化实例(如果T是类类型,则为默认初始化)。

10-08 11:02