Я работаю над школьным проектом и не могу понять, как использовать unique_ptr.
class ClassName
{
private:
unique_ptr <bool[]> uniquePtr;
void func(unique_ptr<bool[]>& refPtr) const
{
refPtr[0] = true;
refPtr[1] = false;
}
public:
//other things that will use the array uniquePtr
};
ClassName::ClassName()
{
bool* boolName = new bool [someSize()];
uniquePtr = unique_ptr<bool[]>(boolName);
func(uniquePtr);
for(int i =0; i<someSize(); i++)
{
cout << uniquePtr[i];
//This is all O's
}
}
Это не работает, потому что uniquePtr устанавливается на все 0 в конце функции func (). Я не могу понять, как изменить uniquePtr так, чтобы он был доступен для других моих функций. Я не пытался создать новый unique_ptr для перехода в func (), а затем использовать move (uniquePtr), но он даже не скомпилируется.
Если uniquePtr передается функцией, в этом случае присваивая ей логическое значение 1 или 0, должен ли он быть доступным для функции, выходящей за пределы класса? Если я печатаю uniquePtr [index] внутри функции, это дает ожидаемые результаты.
Спасибо за помощь!