作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在当前项目中,我有名为 BlahManager
的类和名为 BlahController
的类,定义如下:
class BlahController
{
public:
void doSomething(int x, float y){
// do the work
}
void doOtherThing(char a, char* b, int c){
// do the work
}
}
class BlahManager
{
public:
BlahController m_controllers[5];
void doSomething(int blahIndex, int x, float y){
m_controllers[blahIndex].doSomething(x,y);
}
void doOtherThing(int blahIndex, char a, char* b, int c){
m_controllers[blahIndex].doOtherThing(a,b,c);
}
}
他们是否只制作一次定义函数 doSomething
和 doOtherthing
的抽象类,并让类 Manager 和 Controller 都实现它?
我想这样做是为了强制管理器和 Controller 之间的函数名称/参数相似。
最佳答案
不,你不应该。
BlahController::doSomething
有 2 个参数,而 BlahManager::doSomething
有 3 个参数。所以你不能有一个抽象父类强制两个类实现相同的功能,因为它们不是同一个函数。
此外,您甚至不应该这样做。这些功能不做类似的工作。例如,如果您为 class Circle
和 class Triangle
绘制了 draw
,那么它们正在执行类似的工作。但在这里,一个人在执行一项工作,而另一个人在管理它。所以,即使函数签名相似,我也永远不会让它们从共同的父级继承!
关于c++ - 实现者有细微差别的抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892328/
我是一名优秀的程序员,十分优秀!