初始化结构的私有成员

时间:2013-03-04 13:59:59

标签: c++ constructor struct

现在我有

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

我想将名称初始化为'\0'和storePagePtr到NULL,但是现在我无法在构造函数中访问这些值以初始化它们。我该怎么做?

2 个答案:

答案 0 :(得分: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;
};

这可以避免大量潜在的内存管理/初始化/缓冲区溢出错误。具体来说,它利用Rule Of Zero:您无需实施特殊成员

即可
  • (移动)构造函数
  • (移动)作业

并享受健壮的对象值语义,没有泄漏和UB。

答案 1 :(得分:0)

实现进行初始化的结构的构造函数。