我创建了两个类 - 一个叫做circle:
class circle
{
public:
circle();
QString name ;
int id ;
};
和另一个使用此类的类:
class soso
{
public:
soso();
QList<circle*> lis;
void go();
};
在soso的构造函数中,我添加了两个圆圈:
soso::soso()
{
circle* c1 = new circle();
circle* c2= new circle();
c1->id=1;
c1->name="yamen";
c2->id=2;
c2->name="hasan";
lis.append(c1);
lis.append(c2);
}
在主窗口中我调用了go方法,包含在这里
void soso::go()
{
QFile file("database.txt");
if(!file.open(QIODevice::WriteOnly))
throw " cannot open file ! ";
QDataStream out(&file);
int i=0;
QList<circle*>::iterator it1 =lis.begin();
for(i=0;it1!=lis.end();it1++);
{
out<<(*it1)->id; // segmentation error here
out<<(*it1)->name;
}
}
但我收到了分段错误。我做错了什么?
答案 0 :(得分:5)
你的for循环后你有一个分号!这些真的很难被注意到。
for(i=0;it1!=lis.end();it1++);
这很有效。只是改变它看起来更像标准使用迭代器:
QList<circle*>::iterator it1;
for(it1 = lis.begin();it1!=lis.end();it1++)
{
out<<(*it1)->id;
out<<(*it1)->name;
}