我有一个基类Base和两个派生类DerivedA,DerivedB
class Base
{
};
class DerivedA: public Base
{
CallbackTypeA callA; // call back function pointer of type CallbackTypeA.
};
class DerivedB : public Base
{
CallbackTypeB callB; // call back function pointer of type CallbackTypeB.
};
任何人都可以告诉我在类Base中实现函数的最有效方法 根据哪个对象调用它来检查callA或callB的特定条件? 由于一些当前的限制,我不想使用虚函数
答案 0 :(得分:2)
我可以想到两种可行的方法,但我仍然建议尽可能使用虚函数。
一个。
有一个指向基类中函数的指针,并在派生类的构造函数中将其设置为指向正确的函数。然后基类可以调用它。但这基本上就是虚拟功能机制所做的事情。
B中。
在基类中有一个Enum,它有一个每个派生类的值,每个派生类都会将这个Enum设置为它自己的值。在Base类中,您可以检查此值并转换为正确的类并调用正确的函数。但这是非常非常糟糕的做法,因为Base类需要知道派生类。
同样,我不知道是什么让你不想使用虚拟功能。但我想你应该重新考虑一下......
答案 1 :(得分:1)
使用虚函数和/或(取决于代码的实际结构)typeid
。在大多数情况下,虚函数可能是整体上最好的解决方案:代码易读性,不易出错等等。