エラーになるのは何故?(デフォルトコンストラクタの呼び出し)
コード(1)
// main.cpp struct A { A(int a) { } }; int main() { A a; }
コンパイルエラー
$ g++ main.cpp main.cpp: In function 'int main()': main.cpp:12: error: no matching function for call to 'A::A()' main.cpp:5: note: candidates are: A::A(int) main.cpp:4: note: A::A(const A&)
コード(2)
// main.cpp struct A { A(int a) { } }; int main() { A* a = new A[10]; delete[] a; }
コンパイルエラー
$ g++ main.cpp main.cpp: In function 'int main()': main.cpp:12: error: no matching function for call to 'A::A()' main.cpp:5: note: candidates are: A::A(int) main.cpp:4: note: A::A(const A&)
コード(3)
// main.cpp struct A { A(int a) { } }; int main() { A a[10]; }
コンパイルエラー
$ g++ main.cpp main.cpp: In function 'int main()': main.cpp:12: error: no matching function for call to 'A::A()' main.cpp:5: note: candidates are: A::A(int) main.cpp:4: note: A::A(const A&)
コード(4)
// main.cpp #include <vector> struct A { A(int a) { } }; int main() { std::vector<A> a(10); }
コンパイルエラー
$ g++ main.cpp main.cpp: In constructor 'std::vector<_Tp, _Alloc>::vector(size_t, const _Tp&, const _Alloc&) [with _Tp = A, _Alloc = std::allocator<A>]': main.cpp:14: error: no matching function for call to 'A::A()' main.cpp:7: note: candidates are: A::A(int) main.cpp:6: note: A::A(const A&)
答え
クラス A がデフォルトコンストラクタを持たないから