i'm trying create nested data structure many layers deep every "child" can access data parent/grandparent/etc...
for example take these data structures:
struct grandchild { int somegrandchilddata; }; struct child { int somechilddata; std::vector<grandchild> vgrandchild; }; struct parent { int someparentdata; std::vector<child> vchild; }; struct grandparent { int somegrandparentdata; std::vector<parent> vparent; };
the way i'd access data this:
void main() { // create , fill in data grandparent gp; (int pnum = 0; pnum < 3; pnum++) { gp.vparent.push_back(parent()); (int cnum = 0; cnum < 3; cnum++) { gp.vparent[pnum].vchild.push_back(child()); (int gcnum = 0; gcnum < 3; gcnum++) { gp.vparent[pnum].vchild[cnum].vgrandchild.push_back(grandchild()); // call function , pass grandchild func(gp.vparent[pnum].vchild[cnum].vgrandchild[gcnum]); } } } } void func(grandchild &gc) { int result = gc.somegrandchilddata; // no need pass grandparent, parent, or child because // grandchild can access of data them result += gc.somechilddata; // <<-- how can achieve result += gc.someparentdata; // <<-- how can achieve result += gc.somegrandparentdata; // <<-- how can achieve }
i'm trying because have structures many data members @ each nesting layer , when call functions it's extremely annoying have pass large numbers of arguments each function call , becomes mess keep organized.
any appreciated.
you keeping track of parent of every person(let's call node). so, every node, create object of direct parent inside of , every layer (grandchild, child, parent.. etc).
so each grandchild
have child
object, each child
have parent
object , each parent
have grandparent
object.
then able this:
void func(grandchild &gc) { int datafromthegranchild = gc.datafromgrandchild; int datafromthechild = gc.child.datafromchild; int datafromtheparent = gc.child.parent.datafromparent; int datafromthegradparent = gc.child.parent.grandparent.datafromgrandparent; //.. }
Comments
Post a Comment