我已经重载了X
类型的新运营商使用一些内存池。我的new
运算符没有用户定义的参数,因此唯一的参数是size_t
类型的对象的大小。在该计划的另一部分,我需要放置新的同类型的,像这样:C++:放置新的冲突与自己的新的过载
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
候选者是我的新操作符的重载。我的问题是:
- 为什么编译器不能识别我想使用放置新?
- 无论如何,我该如何使用它?
- WTF是错误信息中显示的类型
X*&
?
X *&是对X *的引用。通过参数返回X *。 http://codepad.org/7vu3r04b –