现在我有
Private:
Struct PageManagerData
{
char name[20];
IPage* storePagePtr;
}
我想将名称初始化为'\0'
和storePagePtr到NULL
,但是现在我无法在构造函数中访问这些值以初始化它们。我该怎么做?
答案 0 :(得分: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;
};
这可以避免大量潜在的内存管理/初始化/缓冲区溢出错误。具体来说,它利用Rule Of Zero:您无需实施特殊成员
即可并享受健壮的对象值语义,没有泄漏和UB。
答案 1 :(得分:0)
实现进行初始化的结构的构造函数。