2013-04-23 17 views
13

Próbuję eleganckie rozwiązanie przewidziane w this answer ale bez względu na to, co staram, nie mogę przejdzie błąd Implicit instantiation of undefined template dla tej linii:ostringstream daje mi niejawnej błąd instancji

std::ostringstream strs;

co muszę zrobić? Zawarłem następujące, które na pewno są przesadą. Jako drugie pytanie wydaje się trudne do wyśledzenia, co dokładnie musi być włączone dla ostringstream:

#include <iostream> 
#include <fstream> 
#include <iosfwd> 
#include <ios> 
+1

Widzę podany link, a jeśli masz zamiar zmienić podwójne na ciąg i masz obsługę C++ 11, po prostu użyj 'std :: to_string (double)'. – stardust

Odpowiedz

36

stringstream klasy są zdefiniowane w sstream nagłówka, więc napisać

#include <sstream> 

i wszystko będzie dobrze.

+1

dziękuję, zadziałało, jestem ciekawa jak mogłem to łatwo znaleźć. Sprawdziłem to i nic nie mówi o tym konkretnym nagłówku: http://www.cplusplus.com/reference/sstream/ostringstream/. Mój kompilator (Xcode) mówi, że jest zadeklarowany w 'iosfwd' – johnbakers

+0

@SebbyJohanns' 'dostarcza tylko forward * deklaracje * dla klas i/o. Musisz '# include' poprawny nagłówek w pliku cpp dla * definicji *. '' jest dostępny do użycia w nagłówkach, w których nie potrzebujesz pełnej definicji klasy. Pomaga to skrócić czasy kompilacji. –

+1

dzięki. nadal chciałbym poznać najlepszy sposób, aby dowiedzieć się, jakie nagłówki zawierają pełne definicje takich rzeczy. Byłem w trakcie gonitwy, żeby go wytropić przed udaniem się tutaj i wydaje się, że powinno to być elementarne zadanie, aby spojrzeć w górę. gdzie miałbym to zrobić? @ Subeterminately sequected – johnbakers

Powiązane problemy