Re: Такой вопрос.
От: Bell Россия  
Дата: 26.07.05 09:59
Оценка: 1 (1) +2
Здравствуйте, Аноним, Вы писали:

А>Хай.


А>Есть функция :


А>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. Бросить исключение.
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.