我正在编写一个用于解决迷宫的 C++ 程序(实际上是用于解决迷宫的线跟随器)。为此我声明了一个全局变量,
vector< node > node_container // to contain each node encountered
// with its latest info.
其中 node 是一个类,表示迷宫中的实际节点。
class node
{
//members..
};
现在我正在使用递归来解决使用函数的迷宫,
void node_action(node & current_node)
// will be called with argument node_container[0] for the first time
{
//do some works first...then
if(new_node_found == true)
{
node new_node;
node_container.push_back(new_node);
// i think at this point reference variable current_node becomes invalid
// because the vector is just reallocated . am i correct ?
//here new node becomes current node and node_action() function is called for it now
node_action(node_container[(node_container.size())-1]);
//return to our first node i.e. for which this version of node_action() is called.
// but i think 'current_node' is no more that what i want it to be
}
} // end of node_action()
int main()
{
node first ;
node_container.push_back(first);
node_action(node_container[0]);
}
现在我的问题是,如果我对向量 node_container 的元素的引用是正确的,即'current_node'(即它变得无效),这个问题的解决方法是什么?
一种可能的解决方案可能是按值传递参数,而不是按引用传递,并在每次修改任何节点对象时更新 node_container。
但这真的是一种凌乱的方式,我想把它弄干净……
我想说我不是很有经验的程序员,所以如果你详细说明你的答案会更有帮助。先谢谢了...