3

今私は持っています

Private:
Struct PageManagerData
{
   char name[20];
   IPage* storePagePtr;
}

'\0'name をstorePagePtrのようなものに初期化したいのですがNULL、現在、コンストラクターでこれらの値にアクセスして初期化することはできません。どうすればいいのですか?

4

2 に答える 2

8

あなたのコードは有効な C++ のようには見えません

struct PageManagerData
{
   PageManagerData() : name { 0 }, storePagePtr(nullptr) { }
private:
   char name[20];
   IPage* storePagePtr;
};

それはまだ典型的な C++ ではありません。

struct PageManagerData
{
private:
   std::string name;
   std::unique_ptr<IPage> storePage;
};

これにより、大量の潜在的なメモリ管理/初期化/バッファ オーバーラン エラーを回避できます。具体的には、ルール オブ ゼロを活用します: 特別なメンバーを実装しなくても実行できます。

  • (移動) コンストラクター
  • (移動) 割り当て
  • デストラクタ

リークや UB なしで、堅牢なオブジェクト値のセマンティクスを利用できます。

于 2013-03-04T14:02:21.470 に答える
0

あなたが言及した初期化を行う構造のコンストラクターを実装します。

于 2013-03-04T14:01:19.843 に答える