【发布时间】:2015-02-25 09:11:31
【问题描述】:
奇怪的问题,已经和几个同事一起研究过... 使用 Qt Creator 和 Qt 4.8.5
- 定义一个对象
- 使用 setter 设置多个值
- 使用 getter 请求值
- 结果:获取 int 没问题,所有其他值都给出分段错误
- 但在调试器中有断点,值会正确显示,所以它们在对象中!
-
相同的代码以前工作过,问题“刚刚出现”。编译器问题?
private: int id; QString name; public; int getId() { return this->id; } // OK void setId(int id) { this->id = id; } QString getName() { return this->name; } // SIGSEGV void setName(QString name) { this->name = name; }
有什么想法吗?已知相同的问题?
更新
根据 cmets 将代码改成这个,还是一样的问题
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; }
【问题讨论】:
-
您最近是否更新了 Qt 库?可能正在使用错误版本的库。尝试暂时删除(重命名)任何可能的冲突库。
-
this->name = name;?也许编译器误解了你打算在那里做什么,因为name、this->name和局部变量name冲突? -
尝试评论
this->name = name;,看看问题是否仍然存在。另外,在调用 getJourneyName() 之前是否删除了this? -
@Frank,
this->id = id;也是如此。尝试评论它以及this->name = name。 -
我猜你需要在这里提供一个minimal reproducible code :)
标签: c++ qt segmentation-fault qt4.8