Russian Qt Forum

Программирование => С/C++ => Тема начата: deaks от Февраль 10, 2011, 14:05



Название: Выделение памяти под объект
Отправлено: deaks от Февраль 10, 2011, 14:05
Добрый день

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


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

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

Проясните данную ситуацию))


Название: Re: Выделение памяти под объект
Отправлено: Пантер от Февраль 10, 2011, 14:09
Можно через фабрику:

class Factory {
  IClass2 *obj ()
  { return new Class2;}
}


Название: Re: Выделение памяти под объект
Отправлено: deaks от Февраль 10, 2011, 14:21
а если у меня заведомо известно, что наследоваться от интерфейса будет только один класс?
то есть и весь смысл фабрики пропадает


Название: Re: Выделение памяти под объект
Отправлено: Пантер от Февраль 10, 2011, 14:24
А смысл тогда в интерфейсе?


Название: Re: Выделение памяти под объект
Отправлено: deaks от Февраль 10, 2011, 14:33
 :D
 в принципе может быть и не один класс, но вероятность мала. Поэтому сразу сделан задел интерфейса.

А по поводу фабрик - не хочется городить такие конструкции ради маловероятного случая((( Какой еще есть способ?


Название: Re: Выделение памяти под объект
Отправлено: ufna от Февраль 10, 2011, 14:41
В любом случае, если следовать логике "интерфейсов", создавать объект второго класса должен тот класс, который знает о нем, а не об интерфейсе. Т.е. "фабрики" не избежать, но это может быть какой-либо "главный" класс или еще что, что создает данный объект, а затем дает указатель на его интерфейс классу один.


Название: Re: Выделение памяти под объект
Отправлено: deaks от Февраль 10, 2011, 14:50
учтем
спасибо за наводку))


Название: Re: Выделение памяти под объект
Отправлено: deaks от Февраль 10, 2011, 14:55
сейчас вот подумал по поводу фабрики в остальных кусках программы и появились очень интересные мысли)

вдвойне спасибо!!!