gpt4 book ai didi

c++ - 变量 'PlayerInfo::HistoryGuess'未初始化。始终初始化成员变量(类型6)错误不断出现

转载 作者:行者123 更新时间:2023-12-02 10:22:26 32 4
gpt4 key购买 nike

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;

它不断警告我InfoNumber,HistoryGuess和Time尚未初始化,我在做什么错?

最佳答案

您的警告完全源于他们的主张。您的琐碎成员没有特别初始化。

您的player变量声明使用的是PlayerInfo类实例的默认构造。由于您没有为该类类型提供default-ctor,因此将使用编译器生成的默认版本,它将按在类中声明的顺序默认构造任何成员变量。
std::string提供了适当的default-ctor,因此可以处理您的标准字符串成员。但是普通成员(两个int和一个double)成员却没有。编译器为这些操作生成了默认构造函数……什么也没有。这使它们未初始化。

几种解决方法:

提供适当的默认值

以下是该类的简单default-ctor。它指定了用我们想要的值初始化的成员。注意,我省略了字符串成员,因为使用编译器生成的default-ctor调用已经为我们处理了它们。

struct PlayerInfo {
std::string Name;
int InfoNumber;
std::string CurrentGuess;
int HistoryGuess;
double Time;

PlayerInfo()
: InfoNumber(0)
, HistoryGuess(0)
, Time(0.0)
{
}
};

使用值初始化

您可以使用大括号语法值初始化:
int main()
{
PlayerInfo player1{};
PlayerInfo player2{};
PlayerInfo player3{};
PlayerInfo player4{};
PlayerInfo player5{};
}

这些只是两个选项。还有其他一些,但是这些可能是最容易理解的,尤其是第一个。

关于c++ - 变量 'PlayerInfo::HistoryGuess'未初始化。始终初始化成员变量(类型6)错误不断出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59519766/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com