Здравствуйте, Аноним, Вы писали:
А>Хай.
А>Есть функция :
А>TYPE& Get()
А>{
А> if(что-то не так) return ??? //А вот что return не знаю.NULL не подходит е-но TYPE пользовательский тип(класс). Если return TYPE(),то возврат адреса локальной переменнной — не хорошо. Если return *(new TYPE())
А>то если я Get() где-то вызову: TYPE a = Get(),а потом уйду из места вызова(функции какой-то например) "а" уничтожится как локальная переменаяя а память
А>останется распределенной и удалить ее уже низя ,тоже как-то нехорошо. Шо делать,или я где-то не догоняю?
А>}
1. Обычно для функций с подобной логикой в качестве возвращаемого значения используется указатель, так что имеет смысл переделать на
TYPE* Get()
{
if(...)
return 0;
...
}
2. Завести специальное значение типа TYPE, и возвращать его. Простейший вариант может выглядеть так:
TYPE& Get()
{
static TYPE empty_val;
if(...)
return empty_val;
...
}
3. Бросить исключение.