gpt4 book ai didi

c++ - 带有自定义构造函数的自定义 STL 分配器

转载 作者:行者123 更新时间:2023-11-30 01:57:33 27 4
gpt4 key购买 nike

我正在使用提到的 STL 分配器 here .
我所做的唯一更改是我从一个名为 Object 的基类继承,并且我使用基类的 new 和 delete 函数进行分配。

    class MyAlloc :public Object{
......
}

我想使用基类的参数化构造函数,它将基于发送到 STLAllocator 的参数,就像这样。

    MyAlloc(A *a) : Object(a) {
... }

然后像这样使用这个构造函数:

   A *a = new A();
std::vector<int,MyAlloc<int> (a) > v;

我无法做到这一点。它导致编译错误:
'a'不能出现在常量表达式中
模板参数 2 无效
提前致谢..:)

最佳答案

您将分配器的类型指定为模板参数,如果您不想要默认构造的分配器,则指定作为构造函数参数:

std::vector<int,MyAlloc<int>> v((MyAlloc<int>(a)));

请注意,我添加了一对额外的括号以避免 "most vexing parse" .在这种情况下,我们无法避免使用大括号初始化,因为这将尝试使用初始化列表来填充 vector 。

关于c++ - 带有自定义构造函数的自定义 STL 分配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18575746/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com