1. ホーム
  2. c++

[解決済み] operator = must be non-static member」とはどういう意味ですか?

2022-02-02 09:29:18

質問

二重リンクリストを作成中で、あるリストと別のリストを等しくするためにoperator=をオーバーロードしました。

template<class T>
void operator=(const list<T>& lst)
{
    clear();
    copy(lst);
    return;
}

が、コンパイルしようとすると、このようなエラーが発生します。

container_def.h(74) : error C2801: 'operator =' must be a non-static member

また、参考になればと思いますが、74行目は定義の最終行で、"}"が入っています。

どのように解決するのですか?

その通り:演算子のオーバーロードはメンバー関数でなければならない。(クラス内で宣言された)

template<class T>
void list<T>::operator=(const list<T>& rhs)
{
    ...
}

また、=からLHSを返すと、連鎖させることができるので良いかもしれません(例えば a = b = c ) - だから、それを list<T>& list<T>::operator=....