初始化结构的私有成员
问题描述:
现在我有初始化结构的私有成员
Private:
Struct PageManagerData
{
char name[20];
IPage* storePagePtr;
}
我想初始化的名字像'\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。
这声明了一个嵌套类型,但不是一个实例。 – 2013-03-04 14:38:00