遗憾的是,我发现这个类定义(T
必须派生自TBase
)
passResponsabilityToBarDestructor
不是函数的实际名称。
template<typename T>
class Foo
{
public:
Foo(const std::string& aName, Bar& aBar)
{
const TBase* myObj = static_cast<const TBase*>(new T);
NiceNameSpace::passResponsabilityToBarDestructor(aName, myObj, aBar);
}
virtual ~Foo() {}
};
我想知道它是否设计得很好。当我编写一个类时,我倾向于避免委托销毁,因为我不知道委托类(在本例中为 Bar)是否会被不知道passResponsabilityToBarDestructor
必须调用aBar
保存指针的成员函数这一事实的人修改myObj
某处并在myObj
被破坏时将其删除。
我想知道:
- 如果这个类设计得很好
- 如果我的设计工作(当我不能使用智能指针时,我会头疼地尝试编写类来破坏构造它的同一个类中的东西)是浪费时间。