[英]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.