人間味あふれるエラーに初遭遇したのでご報告します。現時点でGoogle検索すると792件。
エラーを起こす方法。Windows 7 + Cygwin + g++ 4.8.2にて、g++ -std-std=c++11
というコマンドで以下のコードを実行。何重にもミスがあるひどいコードである。
#include <vector> using namespace std; class MyClass { private: const int INF = 1e9; vector<int> G; public: MyClass(int V){ G.resize(V); } }; class MyClass2 { public: func(void) { m = MyClass(10); } private: MyClass m; } int main(){ return 0; }
出力されるエラー。
confused.cpp:21:14: エラー: ISO C++ では型の無い ‘func’ の宣言を禁止しています [-fpermissive] func(void) { ^ confused.cpp:27:1: エラー: クラス定義の後には ‘;’ が予期されます } ^ confused.cpp: メンバ関数 ‘int MyClass2::func()’ 内: confused.cpp:22:11: エラー: use of deleted function ‘MyClass& MyClass::operator=(MyClass&&)’ m = MyClass(10); ^ confused.cpp:5:7: 備考: ‘MyClass& MyClass::operator=(MyClass&&)’ is implicitly deleted because the default definition would be ill-formed: class MyClass { ^ confused.cpp:5:7: エラー: non-static const member ‘const int MyClass::INF’, can’t use default assignment operator confused.cpp:22: 前のエラーにより混乱していますので、脱出します