Russian Qt Forum
Ноябрь 23, 2024, 22:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выделение памяти под объект  (Прочитано 4309 раз)
deaks
Гость
« : Февраль 10, 2011, 14:05 »

Добрый день

у меня есть классы:
Class1
Class2


Class1 работает с Class2 через интерфейс IClass2, то есть в первом классе храню указатель на интерфейс.
Вопрос - как и где логичнее выделять память под указатель размером второго класса?

Сейчас у меня в Class1:
IClass2 *obj = new Class2; - но это как-то кажется нелогичным, в том смысле, что первый класс будет все знать о втором, минуя интерфейс

Проясните данную ситуацию))
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 10, 2011, 14:09 »

Можно через фабрику:

class Factory {
  IClass2 *obj ()
  { return new Class2;}
}
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
deaks
Гость
« Ответ #2 : Февраль 10, 2011, 14:21 »

а если у меня заведомо известно, что наследоваться от интерфейса будет только один класс?
то есть и весь смысл фабрики пропадает
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Февраль 10, 2011, 14:24 »

А смысл тогда в интерфейсе?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
deaks
Гость
« Ответ #4 : Февраль 10, 2011, 14:33 »

 Веселый
 в принципе может быть и не один класс, но вероятность мала. Поэтому сразу сделан задел интерфейса.

А по поводу фабрик - не хочется городить такие конструкции ради маловероятного случая((( Какой еще есть способ?
Записан
ufna
Гость
« Ответ #5 : Февраль 10, 2011, 14:41 »

В любом случае, если следовать логике "интерфейсов", создавать объект второго класса должен тот класс, который знает о нем, а не об интерфейсе. Т.е. "фабрики" не избежать, но это может быть какой-либо "главный" класс или еще что, что создает данный объект, а затем дает указатель на его интерфейс классу один.
Записан
deaks
Гость
« Ответ #6 : Февраль 10, 2011, 14:50 »

учтем
спасибо за наводку))
Записан
deaks
Гость
« Ответ #7 : Февраль 10, 2011, 14:55 »

сейчас вот подумал по поводу фабрики в остальных кусках программы и появились очень интересные мысли)

вдвойне спасибо!!!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 22.