2013-03-04 151 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。