C++ 变量';PlayerInfo::HistoryGuess';未初始化。始终初始化成员变量(type.6)错误不断出现
它不断警告我,信息号、历史猜测和时间都未初始化,我做错了什么?你的警告正是源于他们声称的。您的琐碎成员不是专门初始化的 您对C++ 变量';PlayerInfo::HistoryGuess';未初始化。始终初始化成员变量(type.6)错误不断出现,c++,C++,它不断警告我,信息号、历史猜测和时间都未初始化,我做错了什么?你的警告正是源于他们声称的。您的琐碎成员不是专门初始化的 您对player变量的声明使用了PlayerInfo类实例的默认构造。由于您没有为该类类型提供默认的ctor,因此将使用编译器生成的默认版本,该版本将按照在类中声明的顺序默认构造任何成员变量 std::string提供了一个适当的默认构造函数,因此可以处理标准字符串成员。但是那些微不足道的成员(两个int和一个double)却没有。编译器生成的默认构造函数不。。。没有什么。它使
player
变量的声明使用了PlayerInfo
类实例的默认构造。由于您没有为该类类型提供默认的ctor,因此将使用编译器生成的默认版本,该版本将按照在类中声明的顺序默认构造任何成员变量
std::string
提供了一个适当的默认构造函数,因此可以处理标准字符串成员。但是那些微不足道的成员(两个int
和一个double
)却没有。编译器生成的默认构造函数不。。。没有什么。它使它们未初始化
解决这一问题的几种方法:
提供适当的默认ctor
下面是该类的一个简单默认构造函数。它指定用我们想要的值初始化的成员。注意,我遗漏了字符串成员,因为它们已经通过编译器生成的默认ctor调用为我们处理了
struct PlayerInfo {
string Name;
int InfoNumber;
string CurrentGuess;
int HistoryGuess;
double Time;
};
int main()
{
struct PlayerInfo player1;
struct PlayerInfo player2;
struct PlayerInfo player3;
struct PlayerInfo player4;
struct PlayerInfo player5;
使用值初始化
可以使用大括号语法值初始化:
struct PlayerInfo {
std::string Name;
int InfoNumber;
std::string CurrentGuess;
int HistoryGuess;
double Time;
PlayerInfo()
: InfoNumber(0)
, HistoryGuess(0)
, Time(0.0)
{
}
};
这只是其中两种选择。还有一些,但这些可能是最容易理解的,尤其是第一个。为什么要在实例化时编写
struct playerfo player1
“我做错了什么?”-没有初始化它们?例:在这些数据之后,您希望player1.InfoNumber的值是多少?为什么?提供适当的默认ctor和/或使用值初始化。(这里有一些谷歌fu术语)。这是一个错误还是一个警告?你的标题是关于错误的,但问题是这是一个警告mistyped@WhozCraig是的,谢谢,我知道它们没有初始化,我是编程新手,如果告诉我怎么做会有帮助。
int main()
{
PlayerInfo player1{};
PlayerInfo player2{};
PlayerInfo player3{};
PlayerInfo player4{};
PlayerInfo player5{};
}