【发布时间】:2022-01-18 17:00:45
【问题描述】:
我有一个父类“ICtl”,它是一个带有纯虚方法的接口,我有多个从它派生的子类(比如说 CButton:public ICtl、CPanel:public ICtl 等)
例如,有一个通用的泛型方法 SetPos(int& x, int& y),但是每个类都有不同的实现。
是否可以编写与子类无关的模板并简单地调用该方法?
例如(显然这段代码是错误的,不会起作用):
template<ICtl* P>
void(P pCtl, int x, int y)
{
pCtl->SetPos(x,y);
}
但以正确的方式完成?
【问题讨论】:
-
那为什么不在共同父母中呢?
-
您的函数可以只接受一个引用或指向父级的指针。例如
void myFunc(ICtl& ctl) { ctl.SetPos(0,0); }。你可以把孩子传进去