我正在开发一个包含三个类的 C++ dll:说基类Base
和Derived1
类Derived2
。场景:
class Base
{
//ctor, dtor, members and methods here
}
class Derived1 : public Base
{
//ctor, dtor, members and methods here
}
class Derived2 : public Base
{
//ctor, dtor, members and methods here
}
我正在使用 MS VC++ 2008 Express 创建的 dll,我想在 Turboc++ 下使用它(borland:非常好的 ide/rad)。
我Derived1
通过 facotry 方法导出,并通过客户端代码Derived1
生成Derived2
. 两者都Derived1
共享Derived2
一个包含在另一个 dll 中的指针函数,所以我将该指针函数放在基类下。
这是问题所在。一旦我创建一个实例(通过工厂)Derived1
并且它可以创建多个实例Derived2
,Base
类构造函数被调用更多次(1Derived1
次和多次Derived2
)。
如何防止 Base 的多个实例?
另一个问题:
在我之前描述的场景中,Derived1
调用 和 的多个实例并Derived2
扩展唯一的公共基类。我问:这是一个糟糕的设计?有没有比我使用的更好的类及其继承层次结构的另一种设计?Derived1
Derived2