Kiedy próbuję skompilować mój program, kompilator narzeka na ten wiersz w pliku .h, który został uwzględniony.Co należy uwzględnić w pliku nagłówkowym dla ostream
ostream & Print (ostream & stream);
Jak można to naprawić?
Kiedy próbuję skompilować mój program, kompilator narzeka na ten wiersz w pliku .h, który został uwzględniony.Co należy uwzględnić w pliku nagłówkowym dla ostream
ostream & Print (ostream & stream);
Jak można to naprawić?
jeśli #include <ostream>
, ostream
zostaną zdefiniowane w przestrzeni nazw std
:
#include <ostream>
// ...
std::ostream & Print (std::ostream & stream);
Kod Minimal dla tej deklaracji do kompilacji:
#include <iosfwd>
using namespace std;
Nie powinieneś umieszczać 'using namespace std;' w pliku nagłówkowym. – Yacoby
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,
Użyj 'przy użyciu', jeśli nie chcesz przeciągnij całą std przestrzeń nazw, np .:
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 –
Lepsze może być #include, które zawiera tylko deklaracje forward. –
@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. –