c++ - 使用循环创建类对象

标签 c++ class methods

我创建了一个带有公共(public)变量、私有(private)变量和 protected 变量的类 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 表达式必须具有常量值”。 也许我在某处犯了错误...

最佳答案

这一行没有意义:

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

你打电话的意思好像是这样的:

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

这显然行不通。相反,您可能想提供名称:

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

创建的变量的名称应该完全不同。

您可能想创建一个 std::vectorstd::array你可以push_back每次创建一个新的Elevator对象。

关于c++ - 使用循环创建类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52952618/

相关文章:

C++ istream 与 lex

Java目录错误

java - 我该如何让这个 'monster fight simulator' 工作?

python - 检索调用方法并即时构建调用?

接受具有共同属性的多个对象的 C# 方法?

c++ - 初始化列表是否抑制对构造函数的调用?

c++ - 如何使用 Lua c API 正确读取字符串和表参数?

android - 我需要 Hyper-V 才能从 Visual Studio 2015 中调试我的 Android 应用程序吗?

python - 当类也在不同的模块中时从另一个模块访问对象?

methods - IBM Rational Rose : Is it possible to model class's operations and integrate it for code generation?