【问题标题】:Creating class objects with loops使用循环创建类对象
【发布时间】:2018-10-23 15:21:11
【问题描述】:

我创建了一个具有公共、私有和受保护变量的 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); 这意味着您正在尝试创建一个新数组,每个循环的大小为i
  • ElevatorObject.get_name(); 很奇怪。你是说print_name(), input_name() 吗?

标签: c++ class methods


【解决方案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::vectorstd::array,您可以在每次创建一个新的Elevator 对象时将push_back 插入。

【讨论】:

  • @JohnnyMopp 已修复。谢谢。
猜你喜欢
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 2012-11-29
  • 2015-02-23
  • 2016-11-11
  • 1970-01-01
相关资源
最近更新 更多