我一直得到-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。我知道有一个类似的问题已被问到,但这个问题并不重复,因为其他问题都是基于提问者错误顺序的初始化列表这一事实,而我的问题是基于以下事实:初始化没有什么区别。所以请不要将其标记为重复;)
答案 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 ,这是实际问题