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{};
}