目前,我有這樣的代碼:如何解決這個C++全局指針到對象的黑客?
static YAML::Node *doc;
...
__attribute__((constructor)) void inityaml() {
doc = new YAML::Node;
parser.GetNextDocument(*doc);
}
的問題是,有沒有更多的C++ - 執行此任務,就像使用一個全局引用或東西的約定十歲上下的方式嗎?
目前,我有這樣的代碼:如何解決這個C++全局指針到對象的黑客?
static YAML::Node *doc;
...
__attribute__((constructor)) void inityaml() {
doc = new YAML::Node;
parser.GetNextDocument(*doc);
}
的問題是,有沒有更多的C++ - 執行此任務,就像使用一個全局引用或東西的約定十歲上下的方式嗎?
爲什麼不完全避免堆分配?
即
static YAML::Node doc;
...
void inityaml() {
parser.GetNextDocument(&doc);
}
你能更充分地說明你正在努力實現有什麼用?換句話說,爲什麼你現在有這樣的代碼? –
除非您描述完整的上下文,否則您可以簡單地執行'YAML :: Node * inityaml()'並從函數返回'doc'。 – Naveen
或將'inityaml()'保留爲'void'-返回,並將靜態聲明移入該函數中。 –