gpt4 book ai didi

C++ 自定义分配器 : const_pointer 'has not been declared'

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:42 25 4
gpt4 key购买 nike

我在为自定义分配器编写自定义“分配”方法时遇到问题。根据cppreference此方法的签名如下:

pointer allocate( size_type n, std::allocator<void>::const_pointer hint = 0 );

但是,当我为我的分配器定义这个方法时,我从编译器那里得到消息“'const_pointer' has not been declared”。下面是显示问题的精简代码。

template <class T>
class linear_allocator
{
public:
typedef T* pointer;
typedef const T* const_pointer;

linear_allocator() {}
~linear_allocator() {}

pointer allocate(unsigned int n,
linear_allocator<void>::const_pointer hint = 0)
{
return 0;
}
};

int main()
{
linear_allocator<double> test_allocator;
}

我想念的一定是简单的东西,但是什么?

最佳答案

问题是由 linear_allocator<void> 的显式实例化引起的自身内部的类模板。您可能应该将其设为单独的非模板基类。

如果你正在处理 C++17,那么你可以简单地编写这个函数来匹配新的规范:

pointer allocate(std::size_t n)

关于C++ 自定义分配器 : const_pointer 'has not been declared' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48279821/

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