2016-03-08 57 views
0
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); 
} 

回报阅读:C++传递变量的函数变化取之于可变

Type: type_first 
Type: unknown_type 

在我实际的代码我呼吁scene_graph get_type(),然后立即跳进traverse_nodes()和呼叫它再次在我写在这里的scene_graph的本地版本上。

回答

0

在我输入问题时意识到了答案。

我不得不引用传递的载体,像这样:

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

我相信这是因为,否则编译器会尝试复制的载体,但它不知道如何,因为节点是一个自定义的结构/类我没有为它定义赋值操作符。

+0

你的矢量是指针的向量。复制它复制指针。你的解释毫无意义。代码中的其他地方可能还有一个错误需要修复,例如也许你的向量包含指向堆栈的悬挂指针。 –