Есть ли более простой / лучший способ сделать это? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь прочитать некоторые входные данные из файла, а затем передать их массиву указателей, указывающих на объекты GasPump, и это единственный способ заставить его работать, и мне интересно, есть либолее простой способ сделать это.

inputFile >> thing1 >> thing1 >> thing1 >> thing1
          >> thing2 >> thing2 >> thing2 >> thing2
          >> thing3 >> thing3 >> thing3 >> thing3;
GasPump* station[3] = {new GasPump(thing1, thing1, thing1),
                       new GasPump(thing2, thing2, thing2),
                       new GasPump(thing3, thing3, thing3)};

Это то, что я имел в виду, но я не уверен, что это даже правильный путь:

GasPump* station = new GasPump[3];
for (int i = 0; i < 3; i++)
{
    intputFile >> thing >> thing >> thing >> thing;
    station[i] = GasPump(thing, thing, thing);
}

1 Ответ

0 голосов
/ 06 февраля 2019

Я не уверен в синтаксисе вашего второго фрагмента кода, но вы можете использовать std::vector для хранения указателей, как показано ниже.Я также рекомендовал бы прочитать о умных указателях, где unique_pointer может быть связано в вашем случае.(Убедитесь, что реализовали деструктор для GasPump или обработали удаление позже ...)

std::vector<GasPump*> station;
for (int i = 0; i < 3; i++) {
    intputFile >> thing >> thing >> thing >> thing;
    station.push_back(new GasPump(thing, thing, thing));
}

Я также не уверен, зачем вам нужны указатели.Если они вам не нужны, просто используйте std::vector<GasPump>.

...