让一个类层次结构:调用从基类指针向右free函数/参考
class Base { virtual ~Base() throw(); };
class DerivedA : public Base { };
class DerivedB : public Base { };
我想有一些具体到每一个派生类的代码。但是,该代码也是特定于使用此类层次结构的应用程序的,我不想将这种派生类专用代码嵌入到这些派生类中。为了避免这样做,我想过写免费功能:
void DerivedASpecificWork(DerivedA da);
void DerivedBSpecificWork(DerivedB db);
然而,通过参考/指向一个基本给定一个派生类的实例时,我没有进入实际类型的实例,因此不能调用适当的Derived * SpecificWork()函数。
我想知道是否有nome的设计模式,可以让我在不知道实例的实际类型的情况下调用派生类特定的函数,即具有与虚函数提供的相同机制,但而不需要这些虚拟函数,这就需要我将特定于应用程序的代码嵌入到该类层次结构中。
实际上,为什么我想这样做是为了提供有关由Lua脚本调用的本机实现的函数内发生的异常的信息。每个异常都带有自己的一组信息,我想在脚本中表示错误的方式取决于异常的类型。我可以在基类中创建一个由派生类实现的纯虚方法,但这需要我将Lua相关的代码嵌入到我的异常层次结构中,这是我不想做的,因为Lua是特定于使用该异常层次的应用程序。
另外我不能使用C++ 11。
谢谢。
你的父母析构函数是私有的虽然.. –
这里的典型模式是使用* actual *虚函数。其他一切都是[反模式](https://en.wikipedia.org/wiki/Anti-pattern)。 –
@Someprogrammerdude是的,这似乎是合乎逻辑的,但我不想污染用作特定于应用程序的代码的库,这就是为什么我问是否有解决方法。 – Virus721