В C# winform мы можем создать объект, который переопределяет определенную функцию базового класса, не зная реализации базы. Например, мы создаем TouchButton: Button, затем переопределяем только функцию WndProc, и реализация Button не отображается нам. В C++ у меня есть интерфейс, например класс IButton, который содержит все виртуальные методы. В моей реализации dll она вернет реализацию IButton. Скажем, теперь я хочу переопределить определенный метод, не зная реализации Button.C# способ переопределения в C++
class TouchButton : public IButton
{
public:
IButton& mBase;
TouchButton(IButton& Base)
: mBase(Base)
{};
void SetSize(int x,int y)
{
mBase.SetSize(x,y);
}
void Visible(bool v)
{
mBase.Visible(v);
}
void Click(int x,int y)
{
// override
}
}
Хорошо, теперь дело в том, я хочу, чтобы переопределить только одну функцию, но я должен скопировать и вставить их mBase.Function (...) вещь снова и снова, это, безусловно, не элегантный способ сделать Это. Есть ли лучший способ архивировать один и тот же результат?
Заранее спасибо.
В C# 'мы создаем TouchButton: Button затем переопределяет только функцию WndProc, и реализация кнопки не видна для нас' - Я думаю, что это утверждение неверно (кнопка полностью доступна) –
Нет причин, по которым вы не можете извлечь из ac lass, реализация которого скрыта (а не только встроенная в классе). – chris
Что не так с классом TouchButton: public Button '(без меня)? –