Итак, я столкнулся с этой проблемой, пытаясь создать текстовую игру для игры на работе. :П
Я хотел, чтобы пользователи могли создавать своего нового персонажа, и объект персонажа был бы назван независимо от того, что они вводят. Я знаю, что у меня может быть строковая переменная, которая содержит имя, и используется счетчик, но даже тогда я могу изменить программу? Вот пример.
(в этой ситуации есть меню, в котором используется регистр переключателя, и другой файл с классом «Символ»)
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;
Нет, это просто не работает.
Прежде всего, компилятор должен знать все имена переменных при компиляции кода. После компиляции имена исчезают, а исполняемый файл содержит исполняемый двоичный код. Это само по себе делает невозможным изменение имен позже.
У вас также есть несколько других проблем в вашем примере кода, поэтому я уверен, что вы получите довольно много запутанных сообщений от компилятора. Я уверен, что сам компилятор довольно смущен вашими попытками. 🙂
Прежде всего Character tempName();
не объявляет объект типа Character
, но ()
в конце заставляет его объявить функцию, возвращающую Character
,
Дело в том, что tempName
уже это имя string
не делает это немного лучше.
Следующая строка Character.setName(tempName);
Вероятно, попытка вызвать функцию для типа. Интересная попытка, но так не получится. Закрытие у вас есть Character::setName(tempName);
если setName
является статическим членом класса Character
, Но это повлияет все объекты этого типа, а не только один.
О, и я думаю, case: 1
это просто опечатка для case 1:
,
Других решений пока нет …