假设我有两个类,a
和 b
,我有 2 个对象,choice1
和 choice2
。
我要求用户输入一个数字。如果用户输入 1
,我将使用 choice1
,否则 choice2
如果它是 2
。
当我尝试使用用户选择的对象时,我不知道我将如何进行,因为我不知道它是哪个对象。
有没有一种方法可以比我在下面所做的更容易地管理它?
int choice;
a choice1;
b choice2;
cout << "Enter 1 or 2";
cin >> choice;
if(choice == 1)
choice1.setName("Carl");
else
choice2.setName("Carl");
答案 0 :(得分:1)
在评论中,您说 a
和 b
有一个共同的基类。在这种情况下,setName()
应该是该基类的成员,然后您可以这样做:
base *b;
if (choice == 1)
b = &choice1;
else
b = &choice2;
/* alternatively:
base *b = (choice == 1) ? static_cast<base*>(&choice1) : static_cast<base*>(&choice2);
*/
b->setName("Carl");
如果稍后添加更多也共享此公共基类的对象,则考虑使用数组而不是一系列 if
,例如:
int choice;
a choice1;
b choice2;
c choice3;
...
base* choices[] = {&choice1, &choice2, &choice3};
cout << "Enter 1-3";
cin >> choice;
if ((choice >= 1) && (choice <= 3))
choices[choice-1]->setName("Carl");