cout nie jest członkiem std


199

Ćwiczę wiele plików i plików nagłówkowych itp. Mam więc ten projekt, który bierze dwie liczby, a następnie dodaje je. Dość proste.

Oto moje pliki:

main.cpp

#include <iostream>
#include "add.h"

int main()
{
    int x = readNumber();
    int y = readNumber();

    writeAnswer(x + y);

    return(0);
}

io.cpp

int readNumber()
{
    int x;

    std::cout << "Number: ";
    std::cin >> x;

    return x;
}

void writeAnswer(int x)
{
    std::cout << "Answer: ";
    std::cout << x;
}

add.h

#ifndef ADD_H_INCLUDED
#define ADD_H_INCLUDED

int readNumber();
void writeAnswer(int x);

#endif // #ifndef ADD_H_INCLUDED

Błąd pojawia się w pliku io.cpp. Dokładne błędy to:

wprowadź opis zdjęcia tutaj

Czy ktoś ma pojęcie, dlaczego tak się dzieje? Dzięki.

EDYCJA: Wczoraj stworzyłem mały projekt z taką samą ilością plików (2 .cpp i 1.h) i nie włączyłem nagłówka iostream w innym .cpp i nadal kompiluje się i działa dobrze.


3
Ponownie edytuj: następnie skompilowałeś ten projekt inaczej. Dołączenie iostream do drugiego pliku CPP jest wymagane, ponieważ masz go tutaj. Być może miałeś to w .hpliku ostatnio.
Mat.

Tak, teraz działa świetnie, dziękuję wszystkim za szybkie odpowiedzi! :)
Paul Hannon,

2
zawsze dołączaj pliki nagłówków systemowych po plikach lokalnych.
Vincent

Odpowiedzi:


317

dodaj #include <iostream>też na początek io.cpp.


5
iostream musi zostać dołączony (bezpośrednio lub pośrednio). W przeciwnym razie, skąd kompilator wiedziałby, gdzie znaleźć std :: cout.
AK

1
Rozumiem co mówisz. Dzięki. Chociaż jak zdobyłem drugiego proj. pracować bez włączania go również w innym .cpp? Zaktualizowałem OP na dole.
Paul Hannon

1
Prawdopodobnie uwzględniłeś to pośrednio. Jest to ZAWSZE wymagane.
Sebastian Hoffmann

2
Musiałem również dołączyć go do pliku .h !! Dzięki
użytkownik391339,

3
również należy go uwzględnić po stdafx.h, a nie wcześniej
Alex

16

Pamiętaj również, że musi to być:

#include "stdafx.h"
#include <iostream>

i nie na odwrót

#include <iostream>
#include "stdafx.h"

1
Skąd "stdafx.h"pochodzi? OP nie używa takich nagłówków
KABoissonneault,

Miałem ten sam błąd i starałem się wymienić ich miejsca, żeby były OK.
Ali Ahmadvand

1

Miałem podobny problem i okazało się, że musiałem dodać dodatkowy wpis, cmakeaby dołączyć pliki.

Ponieważ korzystałem również z biblioteki zmq, musiałem to również dodać do dołączonych bibliotek.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.