Мне нужен класс типа std :: auto_ptr для массива unsigned char *, выделенного новым []. Но auto_ptr вызывает только delete, а не delete [], поэтому я не могу его использовать.Автоматический указатель для массива unsigned char?
Мне также нужна функция, которая создает и возвращает массив. Я вышел с моей собственной реализацией в классе ArrayDeleter, который я использую, как в этом примере:
#include <Utils/ArrayDeleter.hxx>
typedef Utils::ArrayDeleter<unsigned char> Bytes;
void f()
{
// Create array with new
unsigned char* xBytes = new unsigned char[10];
// pass array to constructor of ArrayDeleter and
// wrap it into auto_ptr
return std::auto_ptr<Bytes>(new Bytes(xBytes));
}
...
// usage of return value
{
auto_ptr<Bytes> xBytes(f());
}// unsigned char* is destroyed with delete[] in destructor of ArrayDeleter
Есть ли более элегантный способ решить эту проблему? (Даже используя другую «популярную» библиотеку)
Я посмотрел на повышение, и я думаю, что scoped_array сделает это. Спасибо – Gianluca
@Gianluca: Почему вы не используете вектор? – GManNickG
@GMan: Конечно, теперь я вижу, что это гораздо лучшая идея. Спасибо – Gianluca