【发布时间】:2014-03-12 10:42:11
【问题描述】:
我无法使用智能指针正确组织事情。几乎到了我不得不重新使用普通指针的地步。
我想让在整个程序中使用智能指针变得容易,而不必每次都输入shared_ptr<...>。我马上想到的一个解决方案是创建一个模板类并在其中添加一个typedef sptr,这样我就可以做class Derived : public Object < Derived > ..,然后使用Derived::sptr = ...,但这显然很可怕,因为它不适用于当时的另一个类派生自 Derived 对象。
甚至做typedef shared_ptr<..> MyObjectPtr 也很糟糕,因为为了保持一致性,或者至少对于unique_ptr 和shared_ptr,都需要对每种智能指针都这样做。
那么人们使用智能指针的标准方式是什么?因为坦率地说,我开始认为使用它们太麻烦了。 :/
【问题讨论】:
-
您的问题是必须输入
shared_ptr<SomeObject>? -
也许您应该从描述您实际尝试使用智能指针解决的问题开始?这个问题好像是the X-Y problem的情况。
-
内存泄漏 == 更大的麻烦
-
我想在整个应用程序中使用智能指针。只是想确保我做得正确并在正确的位置使用正确的指针并且不想过于冗长。 SomeObject* 肯定比 (std::)shared_ptr
短。还想确保当事实证明 sptrs 会成为某种障碍时,我不会遇到设计问题。每一个这样的语言特性都可能成为未来的障碍。基本上想使用 sptrs 但从一开始就以最健壮和正确的方式这样做,所以我以后不必重构。
标签: c++ pointers smart-pointers