现在我有
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/