无论实际顺序如何,g ++警告“将在”之后初始化“

时间:2014-09-21 21:25:16

标签: c++ g++ warnings

我一直得到-Wreorder错误,说“将在之后初始化”,但这很奇怪,因为我有两个变量,int width,height;然后在初始化列表中我做:width(col_width),height(col_height),我得到一个警告说 “警告:'FixedGridLayout :: height'将在[-Wreorder]之后初始化    int width,height;“

显然我的初始化与变量定义的顺序完全相同,高度应该在之后初始化,所以为什么它会警告我?即使我改变它,它说 “警告:'FixedGridLayout :: width'将在[-Wreorder]之后初始化    int width,height;“

这是有道理的,但令人沮丧的是,无论我把它们放在哪个顺序,它都会给我这个警告!我知道这不是什么大不了的事,只是一个警告,但它非常令人沮丧,它正在推动我OCD:P

P.S。我知道有一个类似的问题已被问到,但这个问题并不重复,因为其他问题都是基于提问者错误顺序的初始化列表这一事实,而我的问题是基于以下事实:初始化没有什么区别。所以请不要将其标记为重复;)

1 个答案:

答案 0 :(得分:5)

没关系,我想通了,这是警告/错误消息中实际问题没有出现的时间之一。我还初始化了一个基类,这就是实际导致错误的原因。

我有这个:

MyClass::MyClass(QWidget *parent, int col_width, int row_height)
    : width(col_width), height(row_height), BaseClass(parent) {}
                                          //^^^^^^^^^^ Here's the Problem!!!

我需要的是:

MyClass::MyClass(QWidget *parent, int col_width, int row_height)
    : BaseClass(parent), width(col_width), height(row_height) {}

它只是让我失望,因为该消息警告 height 在之后被初始化,它没有说明 BaseClass ,这是实际问题