Как RAII можно использовать с указателями?

Если есть класс:

class classA {
public:
int z = 5;
};

Я понимаю RAII, когда я пишу classA Aobject но что мне делать, если я хочу объявить глобальный указатель?

classA *Aobject;
int main()
{
Aobject = new classA; //not RAII

cout << Aobject->z << endl;

return 1;
}

0

Решение

Я предполагаю, что вы имеете в виду, что вы хотите объявить объект, но вы не хотите сразу его инициализировать, возможно, потому что у вас нет всех параметров, необходимых для его правильного построения. Это верно? Используйте умный указатель.

#include <memory>
#include <iostream>

std::unique_ptr<classA> Aobject;
int main()
{
Aobject.reset(new classA);

cout << Aobject->z << endl;

return 1;
}
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]