初始化结构的私有成员

initializing the private member of a struct

本文关键字:成员 结构 初始化      更新时间:2023-10-16

现在我有

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

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

你的代码看起来不像有效的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;
};

这避免了大量潜在的内存管理/初始化/缓冲区溢出错误。具体来说,它利用了零规则:您可以不实现特殊成员

    <
  • (移动)构造函数/gh>
  • (移动)赋值
  • 析构函数

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

实现一个结构的构造函数,该构造函数完成您提到的初始化。