Эмиттер потока YAML

Я нахожу этот пример:

ofstream ofstr("output.yaml");
YAML::Emitter out(ofstr);
out << some_large_document;

// not necessary anymore:
// ofstr << out.c_str()

Но когда я пытаюсь использовать его, у меня есть:

D:\work\C\map.cpp||In function `int main()':|
D:\work\C\map.cpp|24|error: no matching function for call to `YAML::Emitter::Emitter(std::ofstream&)'|
D:\work\C\yaml-cpp\emitter.h|23|note: candidates are: YAML::Emitter::Emitter(YAML::Emitter&)|
D:\work\C\yaml-cpp\emitter.h|25|note:                 YAML::Emitter::Emitter()|
||=== Build finished: 1 errors, 0 warnings ===|

person spumer    schedule 11.06.2011    source источник


Ответы (1)


У YAML::Emitter нет конструктора, который принимает поток. (Где вы нашли этот пример?)

Вместо этого вам делает нужно использовать закомментированную строку:

ofstream ofstr("output.yaml");
YAML::Emitter out;
out << some_large_document;
ofstr << out.c_str(); // is necessary!
person Jesse Beder    schedule 11.06.2011
comment
@spumer, где на этой странице он создает YAML::Emitter, передавая поток? - person Jesse Beder; 12.06.2011