C ++将变量传递给函数会改变从变量

时间:2016-03-08 05:29:12

标签: c++

static void traverse_nodes ( vector<Node*> sg ) {
  cout << "Type: " << sg[0].get_type() << "\n";
}

int main () {
  vector<Node*> scene_graph;
  scene_graph = {...};

  cout << "Type: " << scene_graph[0].get_type() << "\n";
  traverse_nodes(scene_graph);
}

返回:

Type: type_first
Type: unknown_type

在我的实际代码中,我在scene_graph上调用get_type(),然后立即跳转到traverse_nodes()并在本地版本的scene_graph上再次调用它,就像我在这里写的那样。

1 个答案:

答案 0 :(得分:0)

在输入问题时实现了答案。

我必须通过引用传递矢量,如下所示:

static void traverse_nodes (vector<Node*>&) {

我相信这是因为否则编译器会尝试复制向量,但它不知道如何因为node是一个自定义结构/类而且我还没有为它定义赋值运算符。