9

クラスリンクリストをコンストラクターでコンパイルしているときにこのエラーが発生します。コピー代入演算子を実行したかったのですが、このエラーが発生しました。'list :: list'は、型ではなくコンストラクターに名前を付けています。行は次のとおりです。

list::list& operator= (const list &l)

リストは私のクラスの名前です

4

2 に答える 2

18

このエラーはかなり自明です。

このコードを使用します:

list& operator= (const list &l)

クラス宣言の外では、どのスコープが関数に属するかを正確にする必要があります。

list& list::operator= (const list &l)
//    ^^^^^^
于 2012-10-25T18:10:17.617 に答える
7

クラス定義内operator=で関数を定義している場合は、次のように宣言します。

class list {
  ...
  list& operator=(const list&) { ... return *this; }
};

クラス定義の外でoperator=関数を定義している場合は、次の完全で正しい例のように宣言してください。

class list {
  public:
  list& operator=(const list&);
};
list& list::operator=(const list&) {
  return *this;
}
int main() {}
于 2012-10-25T18:11:48.070 に答える