Я создаю вектор указателей члена класса Location, внутри класса Location, поэтому:
class Location //(simplified to prevent long code)
{
private:
std::string name, description;
int id;
std::vector<Item> items;
public:
Location();
~Location();
std::vector<Location*> nextLocations; //vector of pointers
};
Почему мой код компилируется с
std::vector<Location*> nextLocations;
но не с
std::vector<Location> *nextLocations;
Какая разница? Я думал
int* i;
и
int *i;
были одинаковыми? Разве вектор в любом случае не является вектором указателей местоположения? Моя функция-член в классе Location с именем addLoc () не работает, если параметр не принимает адрес в местоположении, а затем выполняет push_back для nextLocations. Но когда я push_back, почему я должен использовать
nextLocations.push_back(&location);
а не
nextLocations->push_back(&location);
не каждый элемент nextLocations должен быть указателем?