Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
#1

Как быть когда нужно вернуть NULL? - C++

21.08.2014, 11:44. Просмотров 633. Ответов 7
Метки нет (Все метки)

Как быть если нужно чтобы функция в некоторых условиях возвращала NULL, а не возвращаемый тип?
http://www.cyberforum.ru/cpp-beginners/thread1438094.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2014, 11:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как быть когда нужно вернуть NULL? (C++):

Когда нужно использовать &ссылки ,а когда *указатели?
Желательно с примерами

Когда нужно писать один значок &(и) а когда нужно писать два значка &&(ии)?
Когда нужно писать один значок &(и) а когда нужно писать два значка &&(ии)?

Когда нужно/не нужно возвращать объект при перегрузке присваивания?
Доброго времени суток! Перегрузка присваивания: class alpha { private:...

Определить, когда должен быть звонок
Здравствуйте. На днях решал задачу под названием "Звонок". Собственно, вот...

Как перегрузить операцию деления, когда нужно переменную класса поделить на встроенный тип
Добрый день! Подскажите, пожалуйста, простой пример, как провести перегрузку...

7
takhvatulin
11 / 11 / 0
Регистрация: 04.04.2014
Сообщений: 140
21.08.2014, 11:50 #2
C++
1
if(тырыпыры != халигали) return NULL;
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
21.08.2014, 11:58  [ТС] #3
Нет, у меня есть четко возвращаемый тип. ВС2012 ругается.
0
0x10
2554 / 1734 / 285
Регистрация: 24.11.2012
Сообщений: 4,361
21.08.2014, 12:01 #4
См boost::optional, например.
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
21.08.2014, 12:04  [ТС] #5
0x10, А как-то нельзя? Если возвращаемый int, то бывает, что иногда нужно NULL никак в С++?
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
21.08.2014, 12:08 #6
m0, NULL это нулевое значение для указателя. Не стоит его использовать в каких-то других целях (в С++11 NULL использовать вообще не стоит, лучше nullptr).
2
0x10
2554 / 1734 / 285
Регистрация: 24.11.2012
Сообщений: 4,361
21.08.2014, 12:26 #7
1. Можно вернуть специальное значение, которое будет свидетельствовать об ошибке. Вариант не подходит, если функция может вернуть любое значение из допустимого диапазона.
2. Можно кинуть исключение.
3. Можно возвращать указатель на объект. В этом случае чтобы не заморачиваться с освобождением памяти, лучшесразу использовать умные указатели.
4. Про optional уже сказал.
5. Можно передать в функцию выходной параметр, а возвращать из нее код - "ok" или "error".

Какой вариант лучше - нужно смотреть в конкретной задаче.
3
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7004 / 3297 / 448
Регистрация: 04.12.2011
Сообщений: 9,124
Записей в блоге: 5
21.08.2014, 18:16 #8
m0, ещё можно по ссылке возвращать, если синтаксис вызова это позволяет. Тогда тип возврата - bool (или int или др. сравнимый тип) и можно решать дальше, использовать ли значение по ссылке.
0
21.08.2014, 18:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2014, 18:16
Привет! Вот еще темы с решениями:

Объяснить (с примерами) для чего нужен RTTI, как и когда его можно и нужно использовать
доброго времени суток. вопрос такой как я понял RTTI это свойсвто языка С++...

нужно исправить ошибку stream !=NULL
не компилирует, пишет line 42 #include "stdafx.h" #include...

Составить программу вычисления корня. Учесть случаи, когда корень не может быть вычислен
Составить программу вычисления корня \sqrt{4x-6}. Учесть случаи, когда корень...

Нужно ли при удалении динамического массива присваивать NULL?
Вот создал я динамический массив N на M: int **mas; mas=new int*;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru