3

现在我有

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

我想将 name 初始化为类似'\0'并将 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 回答