Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AlexLan73
2 / 2 / 1
Регистрация: 06.10.2013
Сообщений: 141
#1

Как проверить по ссылке, создан ли объект? - C++

22.04.2014, 19:19. Просмотров 623. Ответов 3
Метки нет (Все метки)

Добрый вечер.

C++
1
2
3
4
5
class A1{}
A1 *p1;
A1 *p2;
.......
p1 = new A1();
p2 не создан

Передаю ссылку на значения p1 и p2 в другой класс.
пытаюсь проверить создан класс или нет, такими способами
1. if (p1 != NULL)
2. if(dynamic_cast<A1 *>(p1))

1. Вариант работает если объект создан, если не создан программа "вылетает"
2. Работает но не надежно. Через N циклов тоже вылетает.

Подскажите пожалуйста, как по адресу проверить, что объект был создан?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 19:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как проверить по ссылке, создан ли объект? (C++):

Как проверить, правильно ли создан copy-конструктор? - C++
сабжж ??

Массив и классы (как передаётся объект: по значению или по ссылке?) - C++
Массив передаётся в функцию по ссылке, а объект по значению. Если в классе есть массив, то как передаётся объект по значению или по ссылке?

Что можно возвратить из функции если нужный объект не создан - C++
Добрый день! Есть функции, которые возвращают указатели на двумерные массивы, но заполнение и создание массива происходит после...

Объект не передается по ссылке - C++
Работаю с движком Allegro, есть инициализация дисплея. Когда пишу так: class Core { ALLEGRO_DISPLAY* display; Init() { ...

Как проверить является ли объект базовым классом или наследником - C++
struct Base { int i = -1; }; struct Derived : Base { double d = 0.1; };

Обращение к методам объекта по ссылке на объект - C++
Метод объекта возвращает значение одного из параметров объекта. Необходимо обратиться к методу объекта по ссылке на этот объект. Когда...

3
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
22.04.2014, 19:22 #2
Никогда не оставляйте объекты не инициализированными. Иначе будет вылетать, разве что писать обработчики ошибок под это.
Но лучше просто используйте при объявлении:

C++
1
2
A1 *p1 = 0;
A1 *p2 = 0;
1
AlexLan73
2 / 2 / 1
Регистрация: 06.10.2013
Сообщений: 141
22.04.2014, 19:28  [ТС] #3
Спасибо.
А каким способом проверять?
0
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
22.04.2014, 21:10 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ну проверяете на 0. Единственное нельзя пробовать получить доступ к данным в этом случае. Указатели могут указывать либо на объект либо на 0.
0
22.04.2014, 21:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 21:10
Привет! Вот еще темы с ответами:

Присвоить ссылку на функцию, по ссылке на объект:) - C++
Добрый вечер! Имеются классы: class A {virtual double f1() = 0; virtual double f2()=0;} class B : A class C : A Создаю...

Что вернуть по ссылке, если объект функцией поиска не найден? - C++
Здравствуйте всем! Имеется проблема: приведенная ниже функция ищет элемент (объект класса TreeNode) в бинарном дереве (объект класса...

C++ проверить файл по интернет ссылке на наличие - C++
У меня есть куча ссылок 3600 штук, как при помощи с++ проверить эти ссылки на битые или нет? ...

Rapidjson проверить существует ли объект - C++
Приветствую. Использую rapidjson и тут возникла следующая ситуация. Имеется JSON у которого при различных ситуация передаётся или не...


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

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

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