Можем ли мы сохранить char [undefineded_during_compile_time_size] внутри boost :: shared_ptr? - PullRequest
0 голосов
/ 24 августа 2011

У меня может быть queue<char*> file_queue;, но после каждого char* мне нужно будет убирать. У меня есть динамическая переменная int buff_length;, которая будет длиной каждого символа в file_queue. Он будет установлен один раз из файла config перед созданием queue. Вот я и задаюсь вопросом - возможно ли сохранить char[buff_length] внутри одного boost::shared_ptr и как это сделать?

Ответы [ 2 ]

4 голосов
/ 24 августа 2011

Используйте boost :: shared_array <..>, см. здесь для документации.

0 голосов
/ 24 августа 2011

Вы можете использовать shared_array:

boost::shared_array<char> ptr(new char[buff_length]);

Любая причина, почему std::string или std::vector<char> не подходит для вашей ситуации?

<Ч />

Обратите внимание, что в C ++ 11 вы можете использовать следующее:

std::unique_ptr<char[]> ptr(new char[buff_length]);

std::unique_ptr имеет специализацию для работы с массивами. Я ошибочно полагал, что boost::shared_ptr тоже так делал, но, очевидно, это было неправильно.

...