允许用户命名类对象

时间:2016-01-23 03:15:43

标签: c++ class naming initializing

所以,我在尝试创建基于文本的游戏时遇到了这个问题。 :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;

1 个答案:

答案 0 :(得分:0)

不,这不起作用。

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

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

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

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

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

哦,我猜case: 1只是case 1:的错字。