为什么这个 class 和 class LOCAL 的对象在这个 IF 语句中?
Why is this class and the objects of the class LOCAL in this IF statement?
我是这方面的初学者,所以请多多包涵。这可能是我也可能错过的非常简单的事情。这是代码。
class USA { // USA CLASS
public:
int Economy = 1000000000;
};
void ChooseAttributes() { // THIS FUNCTION IS CALLED SOMEWHERE IN THE CODE
if (PlayerCountryName == "USA") { // CHECK IF THE PLAYER HAS CHOSEN USA AS THEIR COUNTRY
class Player : public USA {}; // THEN INHERIT A NEW CLASS Player FROM CLASS USA
}
Player myPlayer; // MAKE AN INSTANCE OF THE CLASS Player NAMED myPlayer ;
cout << myPlayer.Economy // Print out the member ECONOMY of the object.
}
当我创建 class 的实例时出现问题。它说标识符 Player is not defined 意思是 class 没有定义,对吧?但是当我在 IF 语句中执行此操作时,实例已创建并且我能够从继承的 class 访问成员。我正在使用 VSCODE 2019,将鼠标悬停在它上面说标识符是本地的。如何创建 class 的全局实例?
感谢您的宝贵时间。
超出范围。 As class Player 仅在您的 if 语句中受到限制。如果你想创建 Player 的对象,它应该在范围内。
例如:
while(condition){
if(condition){
int x;
}
cout << x; // Error. 'x’ was not declared in this scope
// You can get an idea of scopes here.
}
您似乎想到了一个更像 Python 的类型模型。 C++ 是一种不同的语言。重要的是,它已编译。
对于类型,这意味着它们完全是在编译时创建的,甚至在第一个 if
语句 运行 之前。在编译时,相关部分是 { }
块。不管是 if(...) {}
、while(...){}
还是普通的 {}
,在所有情况下 {}
都会创建一个块,其中内部名称是该块的本地名称。在块内部,编译器会向外查看周围的块,但编译器不会向外看。
这也意味着在一个for(...){ }
循环中,你可以定义一个类型,而且那个类型仍然只定义一次。您还可以在 for 循环中定义一个 variable,但每次都会初始化该变量。变量初始化发生在 运行 时,类型定义发生在编译时。
我是这方面的初学者,所以请多多包涵。这可能是我也可能错过的非常简单的事情。这是代码。
class USA { // USA CLASS
public:
int Economy = 1000000000;
};
void ChooseAttributes() { // THIS FUNCTION IS CALLED SOMEWHERE IN THE CODE
if (PlayerCountryName == "USA") { // CHECK IF THE PLAYER HAS CHOSEN USA AS THEIR COUNTRY
class Player : public USA {}; // THEN INHERIT A NEW CLASS Player FROM CLASS USA
}
Player myPlayer; // MAKE AN INSTANCE OF THE CLASS Player NAMED myPlayer ;
cout << myPlayer.Economy // Print out the member ECONOMY of the object.
}
当我创建 class 的实例时出现问题。它说标识符 Player is not defined 意思是 class 没有定义,对吧?但是当我在 IF 语句中执行此操作时,实例已创建并且我能够从继承的 class 访问成员。我正在使用 VSCODE 2019,将鼠标悬停在它上面说标识符是本地的。如何创建 class 的全局实例?
感谢您的宝贵时间。
超出范围。 As class Player 仅在您的 if 语句中受到限制。如果你想创建 Player 的对象,它应该在范围内。
例如:
while(condition){
if(condition){
int x;
}
cout << x; // Error. 'x’ was not declared in this scope
// You can get an idea of scopes here.
}
您似乎想到了一个更像 Python 的类型模型。 C++ 是一种不同的语言。重要的是,它已编译。
对于类型,这意味着它们完全是在编译时创建的,甚至在第一个 if
语句 运行 之前。在编译时,相关部分是 { }
块。不管是 if(...) {}
、while(...){}
还是普通的 {}
,在所有情况下 {}
都会创建一个块,其中内部名称是该块的本地名称。在块内部,编译器会向外查看周围的块,但编译器不会向外看。
这也意味着在一个for(...){ }
循环中,你可以定义一个类型,而且那个类型仍然只定义一次。您还可以在 for 循环中定义一个 variable,但每次都会初始化该变量。变量初始化发生在 运行 时,类型定义发生在编译时。