Qt中使用中文注释产生的奇异问题

2014年5月15日 由 Creater 留言 »

在使用Qt编写一个状态指示灯时,定义了类中嵌套的结构体,使用了如下的代码:

struct HLed::Private
{
public:
    enum LightState{ON, OFF, ERR};
    Private(): color(Qt::green), lightState(ON){}
    //灯的颜色
    QColor color;
    //灯的状态
    LightState lightState;
};

编译提示以下错误:

error: C2614: “HLed::Private”: 非法的成员初始化:“lightState”不是基或成员

对于一个以C++作为母语的人来说,我确实不能发现哪里有问题。在我重敲代码后,奇迹般的错误没有了,对比前后的异同,发现是注释引起,修改成这样就行了

struct HLed::Private
{
public:
    enum LightState{ON, OFF, ERR};
    Private(): color(Qt::green), lightState(ON){}
    QColor color;
    LightState lightState;
};

结论:Qt对中文的兼容性还不太好,在程序中使用中文时,当字数为奇数时会出现乱码,不得不将字数凑偶,有时候甚至偶数个字数也会出现错误。

广告位

发表评论

你必须 登陆 方可发表评论.