13

パラメーターを使用してコンストラクターで C++ プレースメント new を呼び出すことはできますか? カスタム アロケーターを実装しており、機能をデフォルト以外のコンストラクターから init 関数に移動する必要がないようにしたいと考えています。

class CFoo
{
public:
    int foo;
    CFoo()
    {
        foo = 0;
    }

    CFoo(int myFoo)
    {
        foo = myFoo;
    }
};

CFoo* foo = new (pChunkOfMemory) CFoo(42);

タイプ CFoo のオブジェクトが、2 番目のコンストラクターを使用して pChunkOfMemory に構築されることを期待します。operator new を使用する場合、デフォルトのコンストラクターのみに固執していますか?

解決しました!私はしませんでし#include <new>た。この後、placement ::new の呼び出しは、デフォルト以外のコンストラクターで正常に機能しました。

4

1 に答える 1

20

プレースメント new を使用するには、次のヘッダーを含める必要があります<new>

#include <new>

そうでない場合、 の配置形式はoperator new定義されません。

于 2010-10-11T22:32:21.220 に答える