c++ - 初始化结构的私有(private)成员

标签 c++ constructor struct

现在我有

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

我想将 name 初始化为 '\0' 并将 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;
};

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

  • (移动)构造函数
  • (移动)作业
  • 析构函数

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

关于c++ - 初始化结构的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15203268/

相关文章:

编译 : [Error] array type has incomplete element type

c++ - 试图将文本文件数据读入要操作的数组,然后吐出

vb.net - 我可以让我的派生类自动使用基构造函数吗?

c# - 有没有办法在 C# 中获取 F# 的构造函数参数是自动不可变私有(private)成员功能?

c++ - 类中的结构?

c# - Struct inside Struct,能够改变内部Struct类型

c++ - std::end 如何在 native 数组上工作

c++ - 获取别名 std::array 的大小?

c++ - 未命名命名空间中 `using namespace` 的范围

c# - 为什么要调用父级的构造函数?