struct nod { std::pair<int, int> matrixPos; nod *anteriorNode; nod(std::pair<int, int> matrixPos) { matrixPos = matrixPos; anteriorNode = nullptr; } //this is for the first node nod(std::pair<int, int> matrixPos, nod* anteriorNode) { matrixPos = matrixPos; anteriorNode = anteriorNode; } }; void expandNode(std::queue<nod> &coada, int **matrice, nod& nodToExpand) { if (matrice[nodToExpand.matrixPos.first-1][nodToExpand.matrixPos.second] == 0) { nod newNode = nod(std::pair<int, int>(nodToExpand.matrixPos.first - 1, nodToExpand.matrixPos.second), nodToExpand); } }
I have some nodes that I need to link together (so I know which is the parent of each node) while also accessing their values.
I need to acess their matrixPos fields for the values needed in the if statement, while I also need their address for the field ‘anteriorNode’.
How can I do this and what is the most efficient way?
Answer
If all you are trying to do is obtain a pointer to nodToExpand
from within the expandNode
function, you can do so by getting its address. References can be used as if they where the referred object itself, that’s their whole deal.
All you need is a good old &nodToExpand
.