Я студент, изучающий c ++.
У меня есть два объекта ("Город" и "Парсер"), и я хотел бы изменить один объект ("Парсер") на другой ("Город").
Единственная «проблема» заключается в том, что мне нужно отправить объект («Город») в конструктор другого (код показывает, что я имею в виду).
class City {
public:
City()
: peopleCount { 0 }
{};
int peopleCount;
};
class Parser {
public:
Parser(const char *filename, City &c)
: _filename { filename },
_c { c }
{};
void fillCity() { _c.peopleCount = 3; };
const char *_filename;
City _c;
};
int main(int argc, char *argv[])
{
City c;
Parser p(argv[1], c);
p.fillCity();
std::cout << c.peopleCount << std::endl; // I would like my output to be "3"
return 0;
}
Я мог бы сделать это вC, отправив необработанный указатель в конструктор.
Но так как я обнаружил этот язык, все говорят, что необязательного указателя следует избегать.
Я проверил умные указатели, но они "удалили" мою переменную (моя переменная изстек, по этой причине я не хочу его удалять).
Я не хочу копировать «Город» в «Парсер» (потому что можно избежать копирования объектов?).
Мне известно, что я мог бы отправить ссылку на объект City в функцию-член "fillCity", но я хотел бы знать, может ли один объект содержать другой объект, не копируя его.
Есть ли другой способ сделатьчто без использования необработанного указателя?
Заранее спасибо.