#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's Character Console! (JCC v1.0)\n";
std::cout << "==============================================\n\n";
std::cout << "Let's start by describing your character..." << std::endl << std::endl;
std::cout << "What is your character's name? ";
std::cin >> character.name; \\ <======= ERROR HERE ========
std::cout << "Let's start by describing your character..." << std::endl << std::endl;
std::cout << "Let's start by describing your character..." << std::endl << std::endl;
std::cin.get();
std::cin.get();
return 0;
}
错误发生在&#39; std :: cin&gt;&gt; character.name;&#39;声明。我是C ++的完全绝对新手。我正在制作这个程序来学习数据结构的绳索,但我遇到了这个错误。我怎么能简单地重写这段代码,以便我可以将数据输入到character.name成员?此外,任何专家建议将不胜感激;我没有太多的C ++先验知识。谢谢SOF社区。 p>
&#39;非静态成员引用必须与指定对象相关。&#39;
答案 0 :(得分:3)
character
是类的名称(即它是一种类型)。你所做的相当于cin >> int.name
这是没有意义的,因为int
是一个类型和一个关键字,而不是一个对象。
注意:并不是说character
是整数。这些是他们自己的两种不同类型。另一个区别是character
是类类型而int
是内置的非类类型。
您需要创建一个可以使用的character
类型的对象。你这样做:
character myChar;
然后你做:
std::cin >> myChar.name;
答案 1 :(得分:3)
您需要声明结构字符的实例:
character c;
c.name = "Cake";
std::cout << c.name << std::endl;
//=> "Cake"
答案 2 :(得分:0)
您应该在主函数之外声明一个结构。但是,您可以像这样创建类的实例:
struct character{
std::string name;
unsigned short int age;
unsigned short int height;
unsigned short int weight;
}character;
如果你打算这样做,我会更改周围的名字。此代码是合法的,但可能会令人困惑。这种语法似乎在C中使用得更多。