ユーザー入力に基づいてクラスのオブジェクトを宣言する必要があるという問題があります。問題は、switch文にオブジェクトのスコープが詰まっていることです。公開する方法があるのかどうか疑問に思っていました。switchステートメントでグローバルオブジェクトを宣言する方法
//ask the user to choose the class of the first fighter
cout << "Welcome to the fighting arena! Would you like the first competitor to be a FIGHTER <1>, a WIZARD <2>, a ROGUE <3>, or a RANGER <4>?" << endl;
cin >> competitor1;
cout << "And what is the name of the competitor?" << endl;
cin >> name1;
//creates an object in the appropriate class and initializes it
switch (competitor1)
{
case 1:
{
Fighter Battler1(name1);
break;
}
case 2:
{
Wizard Battler1(name1);
break;
}
case 3:
{
Rogue Battler1(name1);
break;
}
case 4:
{
Ranger Battler1(name1);
break;
}
default:
cout << "Sorry please enter a valid number!" <<endl << endl;
break;
}
cout << Battler1.hp //this is undefined because of the scope
はいすべてが主な機能の内側に書かれていますが、私は問題は範囲であり、それを回避する方法が必要であることを知っています。
使用ブール値は、trueに1を設定し、その後、あなたはあなたが高いスコープレンジャー* rでのポインタを宣言することができ – Tyler
で真であるものを宣言する。その後、スイッチでrインスタントirate =新しいレンジャー; rの代わりにr->を実行する必要があります。 – StoryTeller
多型を必要とする正しいスコープ –