blc*_*llo 6 c++ variables if-statement
我试图在if-else块中声明一个变量,如下所示:
int main(int argc, char *argv[]) {
if (argv[3] == string("simple")) {
Player & player = *get_Simple();
} else if (argv[3] == string("counting")) {
Player & player = *get_Counting();
} else if (argv[3] == string("competitor")) {
Player & player = *get_Competitor();
}
// More code
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译时,我遇到以下错误:
driver.cpp:38:错误:未使用的变量'
player'driver.cpp:40:错误:未使用的变量'
player'driver.cpp:42:错误:未使用的变量'
player'driver.cpp:45:错误:'player'在这方面没有申明
有任何想法吗?
Bri*_*ndy 21
你的问题是玩家在每个if/else if块中超出范围.
您需要在所有if语句之上声明变量.
但是你不能使用引用,因为你必须立即初始化引用.
相反,你可能想要这样的东西:
int main(int argc, char *argv[]) {
Player * pPlayer = NULL;
if (argv[3] == string("simple")) {
pPlayer = get_Simple();
} else if (argv[3] == string("counting")) {
pPlayer = get_Counting();
} else if (argv[3] == string("competitor")) {
pPlayer = get_Competitor();
}
//Then if you really want to...
Player &player = *pPlayer;
}
Run Code Online (Sandbox Code Playgroud)
rlb*_*ond 17
其他人提出了建议.但是,也可以使用条件运算符.
Player & player = argv[3] == string("simple") ? get_Simple()
: argv[3] == string("counting") ? get_Counting()
: get_Competitor();
Run Code Online (Sandbox Code Playgroud)