#include <iostream>
#include <string>
int main(void) {
struct character{
std::string name;
unsigned short int age;
unsigned short int height;
unsigned short int weight;
};
std::cout << "==============================================\n";
std::cout << "Welcome to Jake Character Console! (JCC v1.0)\n";
std::cout << "==============================================\n\n";
std::cout << "Let start by describing your character..." << std::endl << std::endl;
std::cout << "What is your character name? ";
std::cin >> character.name; \\ <======= ERROR HERE ========
std::cout << "Let start by describing your character..." << std::endl << std::endl;
std::cout << "Let start by describing your character..." << std::endl << std::endl;
std::cin.get();
std::cin.get();
return 0;
}
Ошибка возникает в 'std :: cin >> character.name;' выражение. Я полный, абсолютный новичок в C++. Я делал эту программу изучать канаты структур данных, но я столкнулся с этой ошибкой. Как я могу просто переписать этот код, чтобы я мог вводить данные в member.name? Кроме того, будут высоко оценены любые консультации экспертов; У меня мало знаний C++. Спасибо, сообщество SOF.
"Нестатическая ссылка на элемент должна быть относительно заданного объекта".
character
- это имя класса (т.е. это тип). То, что вы делаете, эквивалентно cin >> int.name
что не имеет смысла, потому что int
- это тип и ключевое слово, а не объект.
Примечание. Нельзя сказать, что character
является целым числом. Это два разных типа. Другое отличие состоит в том, что character
является типом класса, а int
является встроенным неклассовым типом.
Вам нужно создать объект типа character
, которые вы можете использовать. Вы делаете это, делая:
character myChar;
Затем вы выполните следующее:
std::cin >> myChar.name;
Вам нужно объявить экземпляр символа struct:
character c;
c.name = "Cake";
std::cout << c.name << std::endl;
//=> "Cake"
Вероятно, вы должны объявить структуру вне основной функции. Однако вы можете создать экземпляр класса следующим образом:
struct character{
std::string name;
unsigned short int age;
unsigned short int height;
unsigned short int weight;
}character;
Если вы собираетесь это сделать, я бы изменил имена. Этот код является законным, но может быть запутанным. Этот синтаксис, по-видимому, используется больше в C.
character
.character
- это имя класса, а не объекта.