c++ - 如何在类模板的构造函数中初始化 vector 成员变量

标签 c++ templates vector constructor stl

我正在尝试在类模板的构造函数中初始化 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 的实例

关于c++ - 如何在类模板的构造函数中初始化 vector 成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24393319/

相关文章:

c++ - 是否有任何标准如何在 C++ 中编写函数或变量的描述

c++ - 阻止 GUI 在 Linux 中调用时显示?

c++ - 为什么这个 Makefile 无法构建项目?

c++ - 在大模板类中专门化单个方法

vector 元素上的 C++ 调用函数,派生自 vector 的基类

haskell - 如何在 Edward Kmett 的 "Linear"库中使用可变大小向量?

c++ - 嵌入式 web 控件 (IWebBrowser2),嵌入式 javascript 的 onkeydown 和 onkeyup 不触发

c++ - 命名空间和类中的可变参数模板函数

c++ - 包含任意类型的任意 STL 容器的函数模板

c++ - 将结构转换为数组