【问题标题】:Wreorder How can I resolve this warning?Wreorder 如何解决此警告?
【发布时间】:2020-10-13 22:08:50
【问题描述】:

warning ? char.cpp warning

我该如何解决这个警告? 带有警告的信息消息;

char.cpp: In constructor 'switch_channel_info::switch_channel_info()':
char.cpp:7370:6: warning: 'switch_channel_info::secs' will be initialized after [-Wreorder]
 7370 |  int secs;
      |      ^~~~
char.cpp:7369:22: warning:   'DynamicCharacterPtr switch_channel_info::ch' [-Wreorder]
 7369 |  DynamicCharacterPtr ch;
      |                      ^~
char.cpp:7374:2: warning:   when initialized here [-Wreorder]
 7374 |  switch_channel_info()

警告部分如下。

EVENTINFO(switch_channel_info)
{
    DynamicCharacterPtr ch;
    int secs;
    long newAddr;
    WORD newPort;

    switch_channel_info()
        : secs(0),
        ch(),
        newAddr(0),
        newPort(0)
    {
    }
};

【问题讨论】:

  • this。并将警告也粘贴为文本。
  • 这能回答你的问题吗? Constructor initialization-list evaluation order
  • ????????请在此处以纯文本形式发布代码、错误、示例数据或文本输出,而不是难以阅读、无法复制粘贴以帮助测试代码或在答案中使用的图像,并且对依赖的人构成障碍在屏幕阅读器上。您可以编辑问题以在问题正文中添加代码。为了便于格式化,请使用{} 按钮标记代码块,或者使用四个空格缩进以获得相同的效果。 屏幕截图的内容无法搜索、作为代码运行或复制和编辑以创建解决方案。
  • 安排得很详细。
  • 你试过改变构造函数列表中的顺序吗?

标签: c++


【解决方案1】:

在本节中,当我将secs变量替换为ch变量时,警告消失了,问题解决了。

DynamicCharacterPtr ch;
int secs;
long newAddr;
WORD newPort;

我改如下,问题就解决了。

int secs;
DynamicCharacterPtr ch;
long newAddr;
WORD newPort;

【讨论】:

  • 构造函数列表中的顺序应该与构造函数中的顺序相匹配,因此您可以像这里一样调整结构,也可以调整构造函数列表。
猜你喜欢
  • 2012-06-14
  • 2020-04-07
  • 1970-01-01
  • 2013-04-29
  • 2011-12-03
  • 2015-09-11
  • 2012-01-05
  • 2011-04-09
相关资源
最近更新 更多