簡體   English   中英

在 if 語句中聲明時如何訪問 class object? (在 C++ 中)

[英]How to access a class object when declared in an if statement? (in 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循環中,不知道它是否有任何區別

如果你想在兩個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();}

否則,它將 go 出 scope 第二個它擊中第一個}

我已經嘗試過了,但是 object 將丟失其名稱和編號的值,並且只有月份的值

所以你想做的可能是這樣的:

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將 go 超出 scope。 這樣,object 將保留在 scope 中並保留上一次迭代的信息。

您的變量object位於第一個if塊中的塊 scope 中。 您需要加寬 scope。 您可以通過幾種方式擴大 scope。 您可以在包含兩個 if 塊的塊中聲明。 您可以在 function scope 聲明。 您可以在模塊 scope 中聲明。 所有這些選項將使您的變量在您的第二個if塊中可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM