Здравствуйте, amberovsky, Вы писали:
A>Hi, All.
A>Нужно сделать массив из scoped_ptr A>scoped_ptr<MyType> MyArr[100];
A>Единственный способ, как я нашёл проинициализировать, это A>MyArr[i].reset(..)
A>Можно ли сделать инициализацию при объявлении массива? A>Или как-то покрасивее, нежели вручную прописывать по всем индексам.
ну это же array! единственный способ инитить его при объявлении сделать конструкцию вида
Здравствуйте, zaufi, Вы писали:
Z>Здравствуйте, amberovsky, Вы писали:
A>>Hi, All.
A>>Нужно сделать массив из scoped_ptr A>>scoped_ptr<MyType> MyArr[100];
Z>
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, amberovsky, Вы писали:
A>>Нужно сделать массив из scoped_ptr...
Q>А нужно ли? Может, больше подойдёт boost::scoped_array?
Может. Как это понять?
Здравствуйте, amberovsky, Вы писали:
A>Нужно сделать массив из scoped_ptr A>scoped_ptr<MyType> MyArr[100];
A>Единственный способ, как я нашёл проинициализировать, это A>MyArr[i].reset(..)
A>Можно ли сделать инициализацию при объявлении массива? A>Или как-то покрасивее, нежели вручную прописывать по всем индексам.
Не позволяет, потому что он не CopyConstructible и не Assignable.
Поэтому, имхо, проще иметь дело не с сотней scoped_ptr'ов, а с одним scoped_array'ем. Всё равно вместо инициализации придётся использовать создание по умолчанию + присваивание. В этом смысле принципиальных причин scoped_ptr предпочесть scoped_array'ю я не вижу, тем более, что присваивать элементам массива проще, чем reset'ить scoped_ptr'ы. А время жизни элементов массива будет таким же, как и время жизни всего массива.
Если же хочется использовать что-то вроде «литеральной» инициализации, то можно создать обычный массив init_array, а затем уже его скопировать в рабочий scoped_array. Примерно так:
Здравствуйте, amberovsky, Вы писали:
A>Hi, All.
A>Нужно сделать массив из scoped_ptr A>scoped_ptr<MyType> MyArr[100];
A>Единственный способ, как я нашёл проинициализировать, это A>MyArr[i].reset(..)
A>Можно ли сделать инициализацию при объявлении массива? A>Или как-то покрасивее, нежели вручную прописывать по всем индексам.
A>Нужно сделать массив из scoped_ptr A>scoped_ptr<MyType> MyArr[100];
A>Единственный способ, как я нашёл проинициализировать, это A>MyArr[i].reset(..)
A>Можно ли сделать инициализацию при объявлении массива? A>Или как-то покрасивее, нежели вручную прописывать по всем индексам.