Грабли с auto_ptr<string>
От: artem_korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 14.04.10 12:47
Оценка:
Есть у меня кусок кода, к которому я пытаюсь написать юнит-тест. Сигнатура тестируемого метода такова:

auto_ptr<string> SomeClass::GetText()

Т.е. возвращает он смартпоинтер. Мой юнит-тест сейчас выглядит примерно так:

auto_ptr<string> textPtr(object->GetText());
CPPUNIT_ASSERT("Текст для сравнения" == *textPtr);

Юнит-тест не проходит. Отладка показывает, что, вероятно, смартпоинтер освобождается к моменту выполнения проверки. Если я добавляю отладочный вывод, то видно, что в таком вот случае строка выводится на экран:

auto_ptr<string> textPtr(object->GetText());
cout << " text: [" << *textPtr << "]" << endl;

Но если я пытаюсь добавить любой другой код, обращающийся к этому указателю — вывод пропадает. К примеру, вот в таком случае вывод пустой:

auto_ptr<string> textPtr(object->GetText());
cout << " text: [" << *textPtr << "]" << endl;
string copy(*textPtr);

В общем, это.. тихо схожу с ума. Что с этим делать?
С уважением, Artem Korneev.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.