C++ 使用C+;初始化结构中的列表容器对象+;?

C++ 使用C+;初始化结构中的列表容器对象+;?,c++,list,struct,char,C++,List,Struct,Char,我有一个包含三个列表和一个整数的结构,如下面的代码所示 struct MainScreenState { std::list<char*> sessionId; std::list<char*> opposingUser; std::list<char*> currentMove; int totalScore; MainScreenState() { totalScore = 0; } };

我有一个包含三个列表和一个整数的结构,如下面的代码所示

struct MainScreenState 
{
    std::list<char*> sessionId;
    std::list<char*> opposingUser;
    std::list<char*> currentMove;
    int totalScore;
    MainScreenState() {
        totalScore = 0;
    }
};
struct MainScreenState *state;
struct main屏幕状态
{
std::列表sessionId;
std::列出反对者;
std::list currentMove;
积分总分;
主屏幕状态(){
总分=0;
}
};
结构MainScreenState*状态;

可以使用构造函数初始化int,但是如何初始化list对象,以避免编译器警告“warning C4700:未初始化的局部变量'state'”。

std::list
成员自动初始化。问题在于未初始化的变量
状态

MainScreenState *state = NULL; //struct keyword not necessary in C++
或(按要求)


或更喜欢使用自动存储变量或智能指针。< /P>去掉所有这些指针,它们几乎没有在C++中的位置。代码>字符*=>

std::string
状态
无论如何都不需要是指针。我不是说你应该分配一个MainScreenState。我刚才提到,由于我通常更喜欢0(或nullptr)而不是NULL,但是您应该使用您喜欢的:D.@mfontani
nullptr
仅适用于C++11
0
表示数字:)。@mfontani与NULL表示数字时相同:p您应该尝试说服Stroustrup“0表示数字”:。不,使用NULL作为数字与使用0作为指针不同。这是NULL宏不能定义为nullptr的主要原因之一。
MainScreenState *state = new MainScreenState;