Название: Как узнать, что class инициализирован Отправлено: alik от Февраль 18, 2015, 12:36 Добрый день,
Я новичок в С++ и не могу разобраться как проверять инициализирован класс или нет. В Delphi это делается просто: if SomeClass <> nil then Flag_Initialized := False; else Flag_Initialized := True; А как такое сделать в QT ? Название: Re: Как узнать, что class инициализирован Отправлено: Пантер от Февраль 18, 2015, 12:39 Класс не может быть инициализирован, может быть создан экземпляр класса. Сформулируй свой вопрос по-другому. И почитай книжки по плюсам.
Название: Re: Как узнать, что class инициализирован Отправлено: alik от Февраль 18, 2015, 13:32 Класс не может быть инициализирован, может быть создан экземпляр класса. Сформулируй свой вопрос по-другому. И почитай книжки по плюсам. А переменная типа-класс является сама по себе адресом (как в Дельфи) или нет ? Название: Re: Как узнать, что class инициализирован Отправлено: Bepec от Февраль 18, 2015, 13:43 Почитайте про указатели.
PS слишком много надо объяснять :) Название: Re: Как узнать, что class инициализирован Отправлено: kambala от Февраль 18, 2015, 15:07 Класс не может быть инициализирован, может быть создан экземпляр класса. Сформулируй свой вопрос по-другому. И почитай книжки по плюсам. А переменная типа-класс является сама по себе адресом (как в Дельфи) или нет ? Название: Re: Как узнать, что class инициализирован Отправлено: Figaro от Февраль 23, 2015, 10:40 В дельфях объект класса создается так:
Код: SomeClass := TSomeClass.Create(nil); nil в вызове конструктора, замените на свою "порнографию"... Тож самое на плюсах без использования смартпойнтеров: Код: SomeClass = new TSomeClass(); P.S. Пример на плюсах в Вашей нотации... Название: Re: Как узнать, что class инициализирован Отправлено: xokc от Февраль 23, 2015, 11:39 Код Это в C++ работать не будет. Конструктор не вернет NULL, внутри него сгенерится исключение и эти проверки на NULL бессмысленны. Теоретически, можно перегрузить оператор new для TSomeClass, но оно вам надо? Код Кстати, и в Delphi правильное создание объекта выглядит не так, как в первом посте, а примерно вот так: Код
Название: Re: Как узнать, что class инициализирован Отправлено: gil9red от Февраль 23, 2015, 11:52 Figaro, просто скажите, что хотите сделать :)
Название: Re: Как узнать, что class инициализирован Отправлено: vipet от Февраль 23, 2015, 17:04 погадаем на гуще:
1. если есть переменная-поинтер на объект какого-то класса и надо знать присвоено ли ей значение адреса какого-то объекта, то: инициализируем переменную в nullptr (не в 0, не в NULL), присваем, юзаем. Если надо очистить, то присваиваем nullprt опять. 2. если надо знать создался ли и инициализировался в конструкторе объект класса, то юзаем exceptions. Т.к. конструктор не может вернуть true или false 3. если без исключений, то разносим создание объекта и его инициализацию: конструктор создает объект, а отдельный метод класса bool init() инициализирует объект. Т.о. вызовом еще одного метода класса bool isInitialized() можно узнать инициализирован ли объект |