2

我有一个基类 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 的特定条件?由于当前的一些限制,我不想使用虚函数

4

2 回答 2

2

我可以想到两种可行的方法,但我仍然建议尽可能使用虚拟功能。

A.
在基类中有一个指向函数的指针,并在派生类的构造函数中设置它指向正确的函数。然后基类可以调用它。但这基本上是在做虚函数机制所做的事情。

B.
在基类中有一个 Enum,每个派生类都有一个值,每个派生类都会将此 Enum 设置为它自己的值。在基类中,您可以检查此值并转换为正确的类并调用正确的函数。但这是非常非常糟糕的做法,因为基类需要了解派生类。

同样,我不知道是什么问题让您不想使用虚拟功能。但我认为你应该重新考虑...

于 2012-11-07T10:56:12.870 回答
1

使用虚函数和/或(取决于代码的实际结构)typeid。在大多数情况下,虚拟函数可能是整体上最好的解决方案:代码易读性、不易出错等。

于 2012-11-07T10:47:53.183 回答