'How to push objects to a static vector while in the contructor of a class in C++

I need to get in a vector the names of some cities as soon as they are created... In order to accomplish that I created a static vector for the class City, however when I try to compile my code I get the error

error: lvalue required as unary '&' operand
          this->cities.push_back(&this);
                                   ^~~~

What am I doing wrong?

My code is the following...

#include <iostream>
#include <ctime>
#include <vector>

using namespace std;

class City
{
private:
     string name;
     static vector<City *> cities;

public:
     string getName() { return name; }
     City(string name) : name{name}
     {
          this->cities.push_back(&this);
     };
     ~City(){};
} hongKong{"Hong Kong"}, bangkok{"Bangkok"}, macau{"Macau"}, singapura{"Singapura"}, londres{"Londres"}, paris{"Paris"}, dubai{"Dubai"}, delhi{"Delhi"}, istambul{"Istambul"}, kuala{"Kuala"}, lumpur{"Lumpur"}, novaIorque{"Nova Iorque"}, antalya{"Antalya"}, mumbai{"Mumbai"}, shenzen{"Shenzen"}, phuket{"Phuket"};

int main()
{
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source