Last week, I fixed a bug which was caused by a typo. The simplified code is like this:
#include <vector>
using namespace std;
class A {
int i;
public:
A(int i): i(i) {}
};
class B {
vector<A> v;
public:
B(vector<A> v1): v(v) {}
};
int main() {
vector<A> a(1, 0);
B b(a);
return 0;
}
Please note the constructor of B
:
B(vector<A> v1): v(v) {}
It was supposed to use v1
to initialize v
, while I misspelled: v(v)
. My compiler is gcc 6.3.1
, compile and run it:
# g++ -g test.cpp
# ./a.out
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted (core dumped)
Change B(vector<A> v1): v(v)
to B(vector<A> v1): v(v1)
, then all is OK.