簡體   English   中英

如何為具有自引用指針的類實現復制構造函數/賦值運算符?

[英]How to implement a copy constructor / assignment operator for a class that has a self-referential pointer?

我不太確定是否可以實現復制構造函數/賦值運算符,因此,如果我希望該類等於另一個bag實例,它將用該實例替換自身。

我已經嘗試了通用賦值運算符的實現(檢查自引用等)。

template <typename T>
class bags {
public:
  bags(const bag<T>& b) {

  }

  bags<T>& operator=(bags<T> const &b) {

  }

  private:
  bags<T> * self;
}

template <typename T>
class apples : public bags<T> {
public:
  void test () {
    self = new bags<T>; // this will invoke assignment operator
  }

private:
  bags<T> * self;
}

包是蘋果(衍生)的基類。 我希望能夠有袋子裝自己和蘋果。

無需使用

bags<T> * self;

始終提供this語言。 如果由於某種原因必須使用self ,請將其設為成員函數。

bags<T> const* self() const
{
   return this;
}

bags<T>* self()
{
   return this;
}

另一種選擇是使用函數局部變量。

bags<T> const* self = this;  // In const member functions.
bags<T>* self = this;        // In non-const member functions.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM