Problem with children

Started by
5 comments, last by Useful 21 years, 10 months ago
Im trying to get a decent way to render all my OO classes. Using one of the Columns on this site I implemented this code(its not the TOTAL code, but it should be enough for someone to point out what im doing wrong) The problem is that my iterator in Render::updateScene always asserts and i dont know what is the matter. Any help is appreciated
  
class Object
{
public:
 Object() {}
 ~Object() {}
 void addChild(Object* pChild)
 {
  assert(pChild);
  pChild->setParent(this);
  children.push_back(pChild);
 }

 std::vector<Object*>* getChildList()
 {
  return &children
 }
protected:
 std::vector<Object*> children;
 GameObject* parent;
private:
 void setParent(Object* pParent)
 {
  parent = pParent;
 }
};

void Render::updateScene(Object* pObject)
{
 // Base case for the recursion

 if (pObject == NULL)
  return;
 else
 {

  pObject->update();
  pObject->draw();
// begin problem code

  std::vector<pObject*>::iterator it = pObject->getChildList()->begin();
  assert(it);
  while (it != pObject->getChildList()->end())
  {
   updateScene(*it);
  }
// end problem code

 }
}
  
[edited by - useful on June 7, 2002 5:36:42 PM] [edited by - useful on June 7, 2002 5:37:53 PM]
Advertisement
Just your topic, is quite misleading lol...

Slow and steady wins the race.
Slow and steady wins the race.
I agree, yet I dont even know how to explain the problem. So I took my english 101 approach =)
WHICH assert does it assert on???
sorry, thought i commented the problem properly. It asserts after declaring the iterator in Render::updateScene.

I dont understand if the iterator is screwed or if the vector of objects is being passed incorrectly.
assert (it) doesn''t make any sense. If you''re trying to make sure that your container isn''t empty, you should:
assert (pObject->getChildList()->end () != it);
assert (*it) will assert the contained object (a pointer) is not null.
I''m not sure which of those is what you meant.
i figured it out, i wasnt accually using the iterator (stupid me) and asserting it doesnt help because it is an iterator.

thx for the suggestion, it helped alot. code works now.

This topic is closed to new replies.

Advertisement