有没有办法让用户输入引用随机类实例?我的意思是基于已经创建的那些?有点像一个开关,但没有写出开关内的每个实例?我希望我的代码更加通用,以便其他人可以添加它而无需更改开关或代码的其他部分。
我知道帖子的组织方式有点曲折,但我觉得这是在帖子上组织我的想法的最佳方式,所以请多多包涵。在最底部的代码中,我创建了一个指针来更改“test1”实例中的变量。我希望能够让程序能够获取用户输入来选择哪个类,然后在那里进行更改。我知道这种语法不起作用,但例如:
class test {
public:
int number;
int letter;
}
test classTest; //to get user input of which class he wants to select
//to change a variable
cin >> classTest; //user inputs choice
test * classPointer; //pointer to variables
cin >> classPointer -> number;
cin >> classPointer -> letter;
//where classTest is actually not a normal instance, just a way to get user
//input to select which class instance variables he'd like to change
这是我的问题开始的一点背景,这个问题源于。如果您不关心它/需要它来回答我,您可以跳过它。我正在编写一个 RPG 游戏来练习我在 C++ 中所学的内容,并且我想让我编写的代码相当通用。例如,如果我有一个类可以创建某些在“城镇”中通用的对象。比如物品商店、旅馆等。在战斗系统中你可以选择使用物品。在该项目类别中,应该只列出可用的项目。没问题,我可以写大量的 if 和开关和布尔值——但是我不想为战斗系统中的每个项目都写所有这些,我想要某种机制来为我做到这一点。我相信如何调用指针的一些技巧将解决我的问题。但是,说了这么多,请不要被我的背景故事所牵扯。它只是为了帮助您了解我的思维过程,如果它不能解决这个问题,就这样吧,无论如何我都需要知道这些信息以获取指针。
#include <iostream>
#include <stdio.h>
class test {
public:
int number;
char letter;
void function() {
printf("Number = %d\nLetter = %c", number, letter);
}
test() {}
test(int a, char b) : number(a), letter(b) {}
};
int main()
{
test* pointer;
test test1(1, 'c');
pointer = &test1;
test1.function(); //output initial result
printf("\nEnter a new number: ");
std::cin >> pointer -> number; //change number
printf("Enter a new letter: ");
std::cin >> pointer -> letter; //change letter
test1.function(); //output changed result
return 0;
}