首页 > 解决方案 > 在 if 语句中声明时如何访问类对象?(在 C++ 中)

问题描述

这是我的代码:

if (action == "create") {
gymMembership object;
object.name = nameInput;
object.num = numInput;
object.month = 0;
object.print();}

if (action == "extend") {
object.month += monthInput;
object.print();}

但上线 object.month += monthInput;

我收到此错误:error: 'object' was not declared in this scope

请注意,所有这些都在一个while循环中,不知道它是否有任何区别

标签: c++

解决方案


如果你想在两个if语句中使用它,你需要在它们之外声明它:

gymMembership object;
if (action == "create") {
    object.name = nameInput;
    object.num = numInput;
    object.month = 0;
    object.print();
}

if (action == "extend") {
    object.month += monthInput;
    object.print();}

否则,它会在第二个碰到第一个时超出范围}

我已经尝试过了,但是对象将丢失其名称和编号的值,并且只有月份的值

所以你想做的可能是这样的:

gymMembership object;
if (action == "create") {
    object.name = nameInput;
    object.num = numInput;
    object.month = 0;
    object.print();
}

if (action == "extend") {
    object.name = nameInput;
    object.num = numInput;
    object.month += monthInput;
    object.print();
}

不过,现在我开始怀疑您的创作策略是否存在更大的问题。也许我们需要一个更大的例子来说明你想要完成的事情。但我离题了...


编辑:查看您的代码(您在评论中发布的代码),您实际上在做的更像是这样的:

while (true) {
    gymMembership object;
    if (action == "create") {
        object.name = nameInput;
        object.num = numInput;
        object.month = 0;
        object.print();
    }

    if (action == "extend") {
        object.month += monthInput;
        object.print();
    }

}

您似乎想要做的实际上是将其放在 while 循环之外:

gymMembership object;
while (true) {
    if (action == "create") {
        object.name = nameInput;
        object.num = numInput;
        object.month = 0;
        object.print();
    }

    if (action == "extend") {
        object.month += monthInput;
        object.print();
    }

}

否则,object当循环迭代并丢失存储在其中的所有信息时,它将超出范围。这样,对象将保持在范围内并保留上一次迭代的信息。


推荐阅读