Создание объектов класса с циклами - PullRequest
0 голосов
/ 23 октября 2018

Я создал класс Elevator с открытыми, закрытыми и защищенными переменными.Также я написал несколько методов.Теперь вопрос, как я могу упростить эти строки кода с объявлением объектов.

int main()
{
    Elevator ElevatorObject("NAME", 2, 3, 4, 5);
    ElevatorObject.get_name();
    ElevatorObject.get_loadCapacity();
    ElevatorObject.get_MotorPower();
    ElevatorObject.get_height();
    ElevatorObject.get_witdth();

    Elevator ElevatorObject1("NONAME", 5, 4, 3, 2);
    ElevatorObject1.get_name();
    ElevatorObject1.get_loadCapacity();
    ElevatorObject1.get_MotorPower();
    ElevatorObject1.get_height();
    ElevatorObject1.get_witdth();

    system("pause");
    return 0;
}

Я думаю поместить все необходимые имена объектов в строковый массив и затем реализовать его в цикле.Но тогда в параметрах объекта будут такие же значения.

Примерно так.

string ObjectName[3] = { "ElevatorObject1", "ElevatorObject2", "ElevatorObject3" };

int main()
{
    string ObjectName[3] = { "ElevatorObject1", "ElevatorObject2", "ElevatorObject3" };

    for (int i = 0; i < 3; i++) 
    {
        Elevator ObjectName[i]("NEMA", 2, 3, 4, 5);
        ObjectName[i].get_name();
        ObjectName[i].get_loadCapacity();
        ObjectName[i].get_MotorPower();
        ObjectName[i].get_height();
        ObjectName[i].get_witdth();
    }

    system("pause");
    return 0;
}

Ошибка "C2131 выражение должно иметь постоянное значение".Может я где-то ошибся ...

1 Ответ

0 голосов
/ 23 октября 2018

Эта строка не имеет смысла:

Elevator ObjectName[i]("NEMA", 2, 3, 4, 5);

Вы звоните так, как если бы вы имели в виду что-то вроде этого:

Elevator "ElevatorObject1"("NEMA", 2, 3, 4, 5);

Что, очевидно, не сработает.Вместо этого вы, вероятно, хотите указать имя:

Elevator elevator(ObjectName[i], 2, 3, 4, 5);

Имя создаваемой переменной должно быть совершенно другим.

Возможно, вы хотите создать std::vector или std::array, который выможет push_back в каждый раз, когда вы создаете новый Elevator объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...