// Task.h
class Task
{
public:
Task() = default;
Task(const Task &) = delete;
~Task() = default;
Task(Task &&) = default;
const Task & operator= (const Task &) = default;
};
/main.cpp
#include <iostream>
#include "Task.h"
int main()
{
Task t;
std::cout<<"hello world"<<std::endl;
return 0;
}
私はMac OSでC++をコーディングしています。私は上記のコードをコンパイルすると:私は全く理解していない
明示的にデフォルトのコピー代入演算子はMyClassを返す必要があります&
error: explicitly-defaulted copy assignment operator must return 'Task &'
:g++ main.cpp
次のように、私はエラーを取得します。 operator=
ここで非const参照のみを返すことができますか?私はWindowsで同じコードを実行し、エラーなしで動作しました。 Mac OSには特別なC++標準がありますか?
[なぜ演算子=参照を参照しないconst参照](https://stackoverflow.com/questions/2969387/why-operator-returns-reference-not-const-reference) – dlmeetei
@dlmeetei私はしません非参照の利点を知る必要があります。なぜ私はエラーが発生したのか知る必要があります。私はWindowsで同じコードを実行したので、とてもうまく動作します。 – Yves
'const'を削除して、それがうまくいけば、なぜか今のところ言うことはできません。 –