2016-01-23 70 views
-6

所以,我試圖創建一個基於文本的遊戲,在工作中遇到這個問題。 :P允許用戶命名一個類對象

我希望用戶能夠製作新角色,角色對象將被命名,無論他們輸入什麼內容。我知道我可以擁有一個字符串變量來保存名稱並使用計數器,但即使如此,我可以使程序改變嗎?這是一個例子。

(在這種情況下,存在使用開關的情況下菜單,用類「字」另一個文件)

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; 
+2

您可能要想想爲什麼** **你不能做到這一點。這坦率地說是一個可怕的主意。 –

回答

0

不,這是行不通的。

首先,編譯代碼時編譯器必須知道所有的變量名。編譯完成後,名稱消失,可執行文件包含要執行的二進制代碼。這本身使得以後不可能更改名稱。

你也有你的示例代碼一些其他的問題,所以我敢打賭,你從編譯不少混亂的信息。我確信編譯器本身對你的嘗試很困惑。 :-)

首先Character tempName();沒有聲明Character類型的對象,但最後的()使它聲明瞭返回Character的函數。

事實上,tempName已經是string的名稱並沒有使它更好。

下一行Character.setName(tempName);可能是嘗試調用某個類型的函數。有趣的嘗試,但它不會那樣工作。你擁有的是關閉,如果Character::setName(tempName);setNameCharacter的靜態成員。但那樣會影響所有這種類型的對象,而不僅僅是一個。


哦,我想case: 1僅僅是case 1:一個錯字。