2013-03-04 2 views
3

Прямо сейчас у меня естьинициализации частного члена в структуры

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

Я хотел бы инициализировать имя на что-то вроде '\0' и storePagePtr к NULL, но сейчас я не могу получить доступ к этим значения в конструкторе, чтобы инициализировать их , Как мне это сделать?

+0

Это объявление вложенного типа, но не экземпляр. –

ответ

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.

Смежные вопросы