Вы испытываете проблемы из-за дизайна COnOkBtnFunctionality
, который требует использования наследования только для повторного использования кода.
Краткое напоминание: Наследование не предназначено для повторного использования кода, онопредназначен для введения абстракции.
Или другими словами: ваш CMyWnd является специфическим видом COnOkBtnFunctionality
, или он имеет COnOkBtnFunctionality
?
Позвольте мне перенаправить вас к Джеффу Этвуду за дополнительной информацией по теме: http://www.codinghorror.com/blog/2004/08/inherits-nothing.html
В основном вы хотите использовать множественное суперклассирование для реализации функциональности Mixin .Такая реализация имеет свои достоинства, но также и недостатки.
Подумайте, как можно реализовать COnOkBtnFunctionality и семейство, чтобы их можно было использовать в качестве компонентов, а не суперклассов вашего класса Window. Это, безусловно, возможно, и вам, вероятно, понравитсярезультат.
В качестве альтернативы я могу порекомендовать вам одну вещь - шаблон Decorator , который может быть именно тем, что вам нужно.Преимущество заключается в том, что «расширения» могут быть легко выбраны и применены выборочно во время выполнения.