Есть у меня кусок кода, к которому я пытаюсь написать юнит-тест. Сигнатура тестируемого метода такова:
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);
В общем, это.. тихо схожу с ума. Что с этим делать?