Здравствуйте, remark, Вы писали:
R>Здравствуйте, minorlogic, Вы писали:
M>>Мне кажется вы путаете холодное с зеленым. Проблема о которой вы говорите не решается NVI , она решается банальной правильной декомпозицией функций.
M>>Если есть часть которую необходимо выполнить всегда , она вообще не должна наследоваться и быть в интерфейсе, ни в NVI ни в виртуальном.
R>Не понял функция должна быть в интерфейсе, но не в виртуальном, не в не виртуальном... Так в каком же интерфейсе она должна быть???
Имелось ввиду , что она не должна быть в интерфейсе , а должна скрываться гдет в глубине реализаций.
R>Вообще, это как раз и называется NVI, когда общая часть "не наследуется" и не может перекрываться.
M>>Опять же наследование может быть многоуровневым.
R>С этой проблемой NVI, к сожалению, не может справиться. Только если делать так же несколько уровней NVI, что конечно же не очень красиво.
А ведь согласитесь, такое бывает доаольно часто.
M>>M>>void CMyDlgDerived::CMyDlg()
M>> CMyDlg::OnInitDialog();
M>> // or CParentDlg::OnInitDialog(); ???
M>> // свои действия
M>>}
M>>
R>
R>Пример забавный
Если сарказьм , то не понял к чему ? имелось ввиду что тут может быть необходимость вызвать какуюнмть функциональность , одной конкретной реализации.
R> 
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>