W twoim kodzie stworzyłeś wektor klasy Miasto a nie wektor klasy Mieszkaniec.
Poniżej poprawiony kod:
class Miasto
{
string nazwa_miasta;
vector <Mieszkaniec> mieszkancy;
public:
Miasto(string x) { nazwa_miasta=x;}
void dodajMieszkanca()
{
mieszkancy.push_back(Mieszkaniec());
}
};
Czyli składnia wygląda tak:
std::vector <Klasa_przechowywanych_obiektow> nazwa_vectora;
Dodatkowo zamiast push_back polecam używać emplace_back. Wtedy nie trzeba pisać konstruktora danej klasy. Emplace_back sam wie, że ma wywołać domyślny konstruktor klasy Mieszkaniec.
Kod wtedy wygląda tak:
class Miasto
{
string nazwa_miasta;
vector <Mieszkaniec> mieszkancy;
public:
Miasto(string x) { nazwa_miasta=x;}
void dodajMieszkanca()
{
mieszkancy.emplace_back();
}
};