簡體   English   中英

初始化結構的私有成員

[英]initializing the private member of a struct

現在我有

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;
};

這避免了大量潛在的內存管理/初始化/緩沖區溢出錯誤。 具體來說,它利用了零規則:您無需實現特殊成員即可

  • (移動)構造函數
  • (移動)分配
  • 析構函數

並享受健壯的對象值語義,沒有泄漏和 UB。

實現您提到的初始化結構的構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM