2013-03-04 112 views
3

现在我有初始化结构的私有成员

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

我想初始化的名字像'\0'和storePagePtr到NULL但现在我不能为了初始化它们的构造函数访问这些值。我该怎么做?

+0

这声明了一个嵌套类型,但不是一个实例。 – 2013-03-04 14:38:00

回答

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。