先生がはまってたので簡単に書いてみた.これなんでダメになるのかな?ちなみにNGな方のエラーメッセージはこちら.
test.cpp: In function ‘int main()’:
test.cpp:19: error: no match for ‘operator=’ in ‘t1 = Test()’
test.cpp:9: note: candidates are: Test& Test::operator=(Test&)
コンストラクタを直接呼んでそれをoperator=に突っ込むときはconstが必要らしい?まぁ常にconst付けてれば問題ないんですが.
OKなコード
#include <iostream> class Test{ public: Test(){} Test(const Test& other){} ~Test(){} const Test& operator=(const Test& other){ return *this; } }; int main(){ Test t1; Test t2(t1); t1=Test(); return 0; }
NGなコード
#include <iostream> class Test{ public: Test(){} Test(Test& other){} ~Test(){} Test& operator=(Test& other){ return *this; } }; int main(){ Test t1; Test t2(t1); t1=Test(); return 0; }