X
あるタイプのメモリプールを使用するために、新しい演算子をオーバーロードしました。私のnew
演算子はユーザー定義の引数を取りません。したがって、唯一の引数はタイプのオブジェクトのサイズです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
候補は、新しい演算子の私の過負荷です。私の質問は次のとおりです。
- 新しい配置を使用したいことをコンパイラが認識しないのはなぜですか?
- とにかくそれをどのように使用できますか?
- WTFは
X*&
エラーメッセージに表示されるタイプですか?