我有一個Tab類,它有一個組件列表。C++推前迭代
list<Component*> Tab::getComponents() {
return (this->components);
}
void Tab::addComponent(Component* comp){
this->components.push_front(comp);
}
Tab::Tab() {
// x = 25, y = 30
Button* one = new Button(25,30,300,100, "images/button.png");
this->addComponent(one);
Button* two = new Button(75,100,300,100, "images/button.png");
this->addComponent(two);
// x = 150, y = 150
Button* three = new Button(150,150,300,100, "images/button.png");
this->addComponent(three);
}
現在有問題的代碼:
list<Component*>::iterator it = activeTab->getComponents().begin();
for (it ; it != activeTab->getComponents().end(); it++) {
offset.x = (*it)->getX();
cout << "offset.x = " << offset.x << endl;
offset.y = (*it)->getY();
cout << "offset.y = " << offset.y << endl;
}
這是for
循環的第一次迭代的輸出:
offset.x = 25
offset.y = 30
不過,看到我用push_front()
,它應該成爲:
offset.x = 150
offset.y = 150
我在做什麼錯?
編輯:for
循環打印垃圾的第二次迭代...
offset.x = 16272
offset.y = 17
而第三隻打印segmentation fault
:(
您提供的代碼不會打印任何內容。你能發佈一個完整的例子,打印出offset.x和offset.y?我猜你的問題在於這段代碼,因爲你發佈的內容看起來很合理。 – Soverman
我在for循環的第一行看到一個額外的''''。 – Recker
@abhinole,這是一個錯字:P –