Skip to main content
gamedev.net
🔒 Locked

Problem with children

Started by Useful Jun 7, 2002 at 4:35 PM 5 replies 200+ views
Original Post
Useful
Useful
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]
krad7
krad7
Just your topic, is quite misleading lol...

Slow and steady wins the race.
Slow and steady wins the race.
Useful
Useful
I agree, yet I dont even know how to explain the problem. So I took my english 101 approach =)
Xai
Xai
WHICH assert does it assert on???
Useful
Useful
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.
Stoffel
Stoffel
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.
Useful
Useful
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.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.