获取 QString 时出现分段错误

Segmentation fault when getting QString

奇怪的问题,已经和几个同事一起调查过了... 使用 Qt Creator 和 Qt 4.8.5

有什么想法吗?已知相同问题?

更新

根据评论将代码更改为此,仍然是同样的问题

    private:
        int id;
        QString name;

    public;
       int getId() { return id; } // OK
       void setId(int setTo) { id = setTo; } 

       QString getName() { return name; } // SIGSEGV
       void setName(QString setTo) { name = setTo; }

进一步思考在内存中创建对象的方式,我认为 QString 可能不会保留固定数量的字节,这可能是导致这种奇怪行为的原因,你猜怎么着,一个虚拟更改解决了我的问题...

这感觉像是一个真正的 "dirty" 解决方案,但至少我可以继续我的工作 ;-) 但是任何关于根本原因的想法都将不胜感激!已经感谢所有宝贵意见!!!

private:
    QString name; // FIRST DEFINE QSTRING
    int id; // THEN DEFINE INT

public;
   int getId() { return id; } // OK
   void setId(int setTo) { id = setTo; } 

   QString getName() { return name; } // OK
   void setName(QString setTo) { name = setTo; }

我遇到了类似的问题。虽然我找不到这个问题的根本原因,但我有另一个观察。 如果我们使用范围解析运算符在 class 声明之外定义 getter 函数,则代码有效。

QString MyClass::GetX(void) {
    return mX;
}

QString MyClass::GetY(void) {
    return mY;
}

class MyClass
{
public:
    MyClass(){}

    /* Functions for setting mX and mY strings. */

    QString GetX(void);

    QString GetY(void);

    isDataAvailable()
    {
        return mAvailable;
    }

private:
    bool mAvailable;
    QString mX;
    QString mY;
};

据我所知,在 C++ 中,如果我们在 class 声明中定义一个函数,默认情况下它是内联的...因此问题可能与函数的内联有关。