【问题标题】:Initialise list container objects within a struct using C++?使用 C++ 在结构中初始化列表容器对象?
【发布时间】:2012-06-13 14:13:34
【问题描述】:

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

struct MainScreenState 
{
    std::list<char*> sessionId;
    std::list<char*> opposingUser;
    std::list<char*> currentMove;
    int totalScore;
    MainScreenState() {
        totalScore = 0;
    }
};
struct MainScreenState *state;

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

【问题讨论】:

  • 摆脱所有这些指针,它们在 C++ 中几乎没有位置。 char* => std::stringstate 无论如何都不需要是指针。

标签: c++ list struct char


【解决方案1】:

std::list 成员会自动初始化。问题在于变量state,它未初始化。

MainScreenState *state = NULL; //struct keyword not necessary in C++

或(每个请求)

MainScreenState *state = new MainScreenState;

或者更喜欢使用自动存储变量或智能指针。

【讨论】:

  • 我不是说你应该分配一个 MainScreenState。我刚刚提到,因为我通常更喜欢 0(或 nullptr)而不是 NULL,但是,你应该使用你喜欢的:D。
  • @mfontanini nullptr 仅适用于 C++11。 0 用于数字 :)。
  • @mfontanini 与 NULL 相同可以用于数字:P
  • 你应该尝试让 Stroustrup 相信“0 代表数字”:www2.research.att.com/~bs/bs_faq2.html#null。不,使用 NULL 作为数字与使用 0 作为指针不同。这就是为什么不能将 NULL 宏定义为 nullptr 的主要原因之一。
猜你喜欢
  • 2020-10-03
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 2016-05-21
  • 2013-06-27
  • 1970-01-01
  • 2011-05-11
相关资源
最近更新 更多