Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
кидать исключение в конструкторе считается плохим тоном даже в тех языках где это можно
delete this это вообще извращение, особенно в данном ключе
кидать исключение в конструкторе считается плохим тоном даже в тех языках где это можно
delete this это вообще извращение, особенно в данном ключе
Вопрос был не про эстетику, а про возможность завершения работы конструктора без создания объекта класса.
И ответ - возможно. Оба предложенных варианта (со статической функцией и delete this) рабочие.
Нужно ли это делать, это уже другой вопрос и личный выбор каждого.
Уважаемые гуру, помогите еще с одной проблемой.
Есть мой класс СTimeFrame потомок CObject. В нем есть виртуальная функция Compare.
Далее объекты СTimeFrame добавляются в класс CList.
При дальнейшей сортировке CList, вижу в отладчике, что обращение происходит к CObject::Compare, а не к СTimeFrame::Compare, соответственно и сортировка не происходит.
Что делаю не так?
Вопрос был не про эстетику, а про возможность завершения работы конструктора без создания объекта класса.
И ответ - возможно. Оба предложенных варианта (со статической функцией и delete this) рабочие.
Нужно ли это делать, это уже другой вопрос и личный выбор каждого.
Уважаемые гуру, помогите еще с одной проблемой.
Есть мой класс СTimeFrame потомок CObject. В нем есть виртуальная функция Compare.
Далее объекты СTimeFrame добавляются в класс CList.
При дальнейшей сортировке CList, вижу в отладчике, что обращение происходит к CObject::Compare, а не к СTimeFrame::Compare, соответственно и сортировка не происходит.
Что делаю не так?
Похоже параметры функции не совпадают.
Допишите override и компилятор покажет ошибку
Похоже первый параметр должен быть const CObject*, а не const CTimeFrame*
Похоже параметры функции не совпадают.
Допишите override и компилятор покажет ошибку
Похоже первый параметр должен быть const CObject*, а не const CTimeFrame*
'CTimeFrame::Compare' method is declared with 'override' specifier, but does not override any base class method
как так?
Некоторое время назад он нормально работал. Ошибка появилась после того как я начал модифицировать СTimeFrame::Compare (добавил обработку значения mode отличного от 0).
Вернул все назад, но не помогло.
Похоже первый параметр должен быть const CObject*, а не const CTimeFrame*
у CObject нет полей данных которые нужно сравнивать в Compare.
у CObject нет полей данных которые нужно сравнивать в Compare.
внутри компаратора скастуйте к нужному типу, получите нужные поля
внутри компаратора скастуйте к нужному типу, получите нужные поля
можно подробнее как это сделать?
заменил CTimeFrame на CObject в СTimeFrame::Compare
и закомментил все содержимое СTimeFrame::Compare, кроме return(0);
Всеравно выполнение передается в CObject мимо СTimeFrame .