-6

因此,我在尝试创建基于文本的游戏以在工作中玩时遇到了这个问题。:P

我希望用户能够制作他们的新角色,并且无论他们输入什么,角色对象都会被命名。我知道我可以只拥有一个包含名称并使用计数器的字符串变量,但即便如此,我可以让程序更改它吗?这是一个例子。

(在这种情况下,有一个使用 switch case 的菜单,以及另一个具有“字符”类的文件)

case: 1
    string tempName;
    cout << "Please enter the name of your new character." << endl;
    cin >> tempName;
    Character tempName();
    Character.setName(tempName);
    cout << "Congratulations! Your character " << Character.getName() << " has      been created." << endl;
4

1 回答 1

0

不,这根本行不通。

首先,编译器在编译代码时必须知道所有的变量名。编译后名称消失,可执行文件包含要执行的二进制代码。这本身就使得以后无法更改名称。

您的示例代码中还有一些其他问题,所以我敢打赌,您会从编译器中得到很多令人困惑的消息。我确定编译器本身对您的尝试感到非常困惑。:-)

首先Character tempName();不声明类型的对象Character,但()最后使它声明一个返回 a 的函数Character

tempName已经是 a 的名称这一事实string并没有使它变得更好。

下一行Character.setName(tempName);可能是尝试为某个类型调用函数。有趣的尝试,但它只是不那样工作。您拥有的关闭是Character::setName(tempName);ifsetName是 class 的静态成员Character。但这会影响该类型的所有对象,而不仅仅是单个对象。


哦,我猜case: 1这只是case 1:.

于 2016-01-23T11:00:00.207 回答