用循环创建类对象

时间:2018-10-23 15:21:12

标签: c++ class methods

我创建了一个具有公共,私有和受保护变量的类电梯。另外,我写了一些方法。现在是一个问题,如何通过对象声明简化这些代码行。

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 :(得分:1)

这行没有意义:

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的{​​{1}}或std::array,每次创建新的push_back对象时都可以。