![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
akahan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 11.2.2007 Репутация: нет Всего: нет |
Привет, хакеры!
Мне нужно при создании экземпляра класса запретить его создание! Т.Е., допустим:
Правильный ли это код??? Если нет, то как мне сделать, что-бы при не прохождениии условия экземпляр класса не создавался, а возвращался допустим NULL. Это сообщение отредактировал(а) akahan - 1.3.2007, 16:10 |
|||
|
||||
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
тут нужно бросать исключение по проверке условия а лучше вот так
Это сообщение отредактировал(а) Fazil6 - 1.3.2007, 16:26 |
||||||
|
|||||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
вариант попроще(как это реализовано в паттерне "Одиночка"): делаешь конструктор private, а вместо new foo используешь вызов некой функции getInstance. правда, я не знаю, можно ли объявить статический метод, тип результата которого - сам класс... или, может, потом(при создании) приведение типов делать надо будет... Не в курсе
![]() |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
Чем же он проще? Я именно это и написал. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
||||
|
||||
akahan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 11.2.2007 Репутация: нет Всего: нет |
Допустим, последний вариант хороший, но как быть если foo наследуется от bar?
Что должна создавать Create класс foo или bar? По идее расшаренная функция Create должна быть в классе bar. Можно ли будет переопределять эту функцию в наследуемых классах? Или что делать в таком случае? Можно, конечно и непереопределять, но тогда придется делать каждый раз dynamic_cast? |
|||
|
||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
тут лучше фабрику юзать.
Это сообщение отредактировал(а) Fazil6 - 2.3.2007, 01:59 |
||||
|
|||||
console |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 307 Регистрация: 12.2.2007 Где: Belarus::Minsk Репутация: 1 Всего: 3 |
Ммм... а может стоит поместить чистую виртуальную функцию в класс, чтобы сделать его абстрактным?
|
|||
|
||||
Athlon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 15.1.2006 Где: Украина:: Запорож ье Репутация: нет Всего: нет |
||||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
console, тогда тому, кто будет читать твой код, будет непонятно, чего хочешь сделать
|
|||
|
||||
console |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 307 Регистрация: 12.2.2007 Где: Belarus::Minsk Репутация: 1 Всего: 3 |
||||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
console, ну я буду думать, что твой не только нельзя создать, но он еще и наследуется где-то, хотя это на самом деле не так
![]() |
|||
|
||||
threef |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: 9 Всего: 10 |
и обьект не динамический , и не создастся - в общем, я согласен с Fazil6 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |