使用此指针

时间:2010-06-22 19:54:04

标签: c++ class stl this

我有一个关于“this”用法的问题。

假设我有两个班级A& B;他们的粗略轮廓如下:

class A
{
public:
   ...
   void AddB( B* b )
   {
      // inserts B into the vector v
   }

private:
   std::vector<B*> v;
};

class B
{
public:
   ...

   void foo( void )
   {
      ...

      // Adds itself to the queue held in A
      a.AddB( this );
   }  
};

以这种方式使用“这个”一般是不好的做法吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:9)

不,这没有什么不妥,只要你小心所有权和删除。

答案 1 :(得分:2)

如果您可以引入boost,最好使用boost::shared_ptr而不是直接指针,因为您将无需以正确的顺序手动释放内存。并且你将消除悬挂指针指向已经释放的内存的机会。

然后您可以使用shared_from_this()代替this。它将创建一个共享指针,而不是您的类型的直接指针。您的B类型来自enable_shared_from_this

您的类型A会包含boost::shared_ptr<B>的向量,而不是直接指针。

Here's an example