2016-03-08 62 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

你的矢量是指針的向量。複製它複製指針。你的解釋毫無意義。代碼中的其他地方可能還有一個錯誤需要修復,例如也許你的向量包含指向堆棧的懸掛指針。 –