I tried to make a list of Person objects using vector and got some weird error. If I remove the copy constructor it works. Is there a way to make a vector while keeping the constructor?
Now you have defined a constructor (in this case your copy constructor) the default constructors become unavailable. But your program requires a constructor that takes no arguments - so define one. It doesn't actually have to do anything.
You could also do with a const before the argument of your copy constructor.
You need a default constructor. Once you define a constructor, you no longer get the default ones! In this case you don't actually need the copy constructor. The default one is fine. so L11 L12 can be removed below.