2013-12-05 3 views
1

Преобразование это к общему PTR проста:Может ли C++ make_shared использоваться на массивах?

MyObject * myObject = new MyObject(int n); 
auto myObject = make_shared<MyObject>(n); 

Но что, если мой код является массивом?

char * myChars = new char[n]; 
auto myChars = make_shared<char>???? 

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

+0

Для начала используйте 'vector' ... – StoryTeller

+0

4%, связанные с: http://stackoverflow.com/q/16596950/560648 –

+0

http://ideone.com/UcPk3G – user2176127

ответ

1

Ну, вероятно, в C++ 11 вы можете использовать shared_ptr на массивах, но только если вы вручную предоставите соответствующий деаэратор. В отличие от unique_ptr, который явно имеет частичную специализацию на T [], shared_ptr не имеет одного, но может быть снабжен пользовательским удалением.

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