【发布时间】:2012-09-14 21:19:10
【问题描述】:
关于声明函数的快速问题。假设我有以下代码:
class a{
int var;
/* stuff*/
}
class b : a{
/* other stuff*/
}
class c : a{
/* more other stuff*/
}
class d{
myFunctionThatWantsTheIntNamedVar(SubClassOfClassA SomeClassUnknownAtCompileTime);
}
而 myFunctionThatWantsTheIntNamedVar() 正是想要的,在 a 的基类中声明的整数(称为 var)。类 d 中的函数可以传递类 b 或类 c 的实例,这在编译时是未知的(仅在运行时)。
有没有一种方法可以简洁地声明一个可以采用 b 类或 c 类并获得相同基变量的函数?
我同时做的是在d类中声明两个方法,如下:
class d{
myFunctionThatWantsTheIntNamedVar(c aClassCInstance);
myFunctionThatWantsTheIntNamedVar(b aClassBInstance);
}
这很好,但是这两种方法中的代码是相同的......而且根据我对面向对象编程的理解,如果代码相同,你应该能够将它组合成一个更好的函数。
对此有什么想法吗?只是在这里寻找最佳实践或其他建议,因为我在一家小公司工作并且有时很难获得反馈。
编辑:抱歉,我的代码有错误,将其更改为:
myfunctionThatWantsTheInNamedVar(a aClassAInstance);
到:
myfunctionThatWantsTheInNamedVar(c aClassCInstance);
我的错。
【问题讨论】:
标签: c++ syntax function-prototypes