所以,我在尝试创建基于文本的游戏时遇到了这个问题。 :P
我希望用户能够创建他们的新角色,并且无论他们输入什么,角色对象都会被命名。我知道我可以只有一个字符串变量来保存名称并使用计数器,但即使这样,我可以让程序改变吗?这是一个例子。
(在这种情况下,有一个使用switch case的菜单,另一个带有'Character'类的文件)
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;
答案 0 :(得分:0)
不,这不起作用。
首先,编译器必须知道编译代码时的所有变量名。编译后,名称消失,可执行文件包含要执行的二进制代码。这本身就不可能在以后更改名称。
您的示例代码中还有一些其他问题,所以我敢打赌,您会从编译器中收到一些令人困惑的消息。我确定编译器本身对你的尝试非常困惑。 : - )
首先,Character tempName();
不会声明Character
类型的对象,但最后的()
会声明一个返回Character
的函数。
tempName
已经是string
的名称这一事实并没有让它变得更好。
下一行Character.setName(tempName);
可能是尝试为类型调用函数。有趣的尝试,但它不会那样工作。如果Character::setName(tempName);
是类setName
的静态成员,则您的结果为Character
。但这会影响该类型的所有对象,而不仅仅是单个对象。
哦,我猜case: 1
只是case 1:
的错字。