2010-05-22 10 views

Odpowiedz

9

jeśli #include <ostream>, ostream zostaną zdefiniowane w przestrzeni nazw std:

#include <ostream> 

// ... 

std::ostream & Print (std::ostream & stream); 
+0

Jeśli twój program nie jest olbrzymi , po prostu umieść "using std :: ostream" po #include; życie i linie są zbyt krótkie, aby wpisać std :: więcej niż musisz –

+0

Lepsze może być #include , które zawiera tylko deklaracje forward. –

+5

@Tom Womack: NIGDY nie wkładaj instrukcji w plik nagłówkowy. Życie jest krótka droga, aby rozwiązać problem, który spowoduje, gdy wysadzi w twarz. –

0

Kod Minimal dla tej deklaracji do kompilacji:

#include <iosfwd> 
using namespace std; 
+4

Nie powinieneś umieszczać 'using namespace std;' w pliku nagłówkowym. – Yacoby

+0

Uzgodnione. Ale nie powiedziałem, że ten kod trafił do pliku nagłówkowego. Jeśli nie masz kontroli nad zawartością dołączanego pliku nagłówkowego, te dwie linie sprawią, że będzie działać z pliku .cpp. Regardless, jest lepszym wyborem niż w tym przypadku. – BenG

1

Użyj 'przy użyciu', jeśli nie chcesz przeciągnij całą std przestrzeń nazw, np .:

Powiązane problemy