gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:05:07 25 4
gpt4 key购买 nike

现在我有

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com