2013-12-20 16 views
0

目前,我有這樣的代碼:如何解決這個C++全局指針到對象的黑客?

static YAML::Node *doc; 
... 
__attribute__((constructor)) void inityaml() { 
    doc = new YAML::Node; 
    parser.GetNextDocument(*doc); 
} 

的問題是,有沒有更多的C++ - 執行此任務,就像使用一個全局引用或東西的約定十歲上下的方式嗎?

+1

你能更充分地說明你正在努力實現有什麼用?換句話說,爲什麼你現在有這樣的代碼? –

+1

除非您描述完整的上下文,否則您可以簡單地執行'YAML :: Node * inityaml()'並從函數返回'doc'。 – Naveen

+0

或將'inityaml()'保留爲'void'-返回,並將靜態聲明移入該函數中。 –

回答

2

爲什麼不完全避免堆分配?

static YAML::Node doc; 
... 
void inityaml() { 
    parser.GetNextDocument(&doc); 
} 
+0

難道不會傳遞一個指針,而不是一個引用(該函數似乎需要)? – Xymostech

+0

@Xymostech - 原始代碼中有錯誤。我試圖做出有根據的猜測。 –

+0

不,我不認爲原始代碼中沒有錯誤。它確實需要參考。您可以看到一個使用示例[此處](https://code.google.com/p/yaml-cpp/wiki/HowToParseADocument#Basic_Parsing)。 – Xymostech