【发布时间】:2009-06-18 18:37:51
【问题描述】:
我有一个对象,无论它的实例是静态分配还是动态分配,它都需要稍微不同的构造。 该对象应该只有一个默认构造函数。因此,拥有两个构造函数,每种情况一个,并让用户显式选择正确的构造函数是不可能的。
有什么合适的方法可以实现吗?
这就是我目前的做法: 我为该对象重载 new 运算符,分配内存,并将返回的指针用作指向(尚未初始化的)实例的指针,并将对象的特定数据成员设置为某个魔术值。 然后,在consutrctor 中,我检查了成员的值。如果是魔法值,那么对象是 99.9% 动态分配的。
这种方法在发布和调试模式下对我来说都没有失败,但是,这似乎是一个可怕的 hack。
【问题讨论】:
-
不,你必须接受你的黑客攻击。唯一“正确”的方法是修复您的设计。
标签: c++ constructor memory-management