我已经为一种类型重载了 new 运算符X
以使用一些内存池。我的new
运算符不接受用户定义的参数,因此,唯一的参数是 type 对象的大小size_t
。在程序的另一部分,我需要为同一类型放置新的位置,如下所示:
new (ptr) X();
(其中 ptr 是指向预分配内存位置的指针)
似乎我对新类型阴影放置新的新运算符的重载。至少,编译器抱怨:
error: no matching function for call to ‘X::operator new(long unsigned int, X*&)’
note: candidate is:
note: static void* X::operator new(size_t)
note: candidate expects 1 argument, 2 provided
候选人是我对 new 运算符的重载。我的问题是:
- 为什么编译器不能识别我想使用placement new?
- 无论如何,我该如何使用它?
- WTF 是
X*&
错误信息中显示的类型?