cout não é membro de std

199

Estou praticando usando vários arquivos e arquivos de cabeçalho, etc. Então, eu tenho esse projeto que pega dois números e os adiciona. Bem simples.

Aqui estão meus arquivos:

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

O erro está aparecendo no io.cpp. Os erros exatos são:

insira a descrição da imagem aqui

Alguém tem alguma idéia de por que isso pode estar acontecendo? Obrigado.

EDIT: ontem, fiz um pequeno projeto com a mesma quantidade de arquivos (2 .cpp e 1.h) e não incluí o cabeçalho iostream no outro .cpp e ele ainda compilou e funcionou bem.

Paul Hannon
fonte
3
Re sua edição: então você compilou esse projeto de maneira diferente. É necessário incluir o iostream no seu segundo arquivo cpp, como você o possui aqui. Talvez você tenha incluído isso no .harquivo da última vez.
Mat
Sim, está funcionando muito bem agora, obrigado pelas respostas rápidas a todos! :)
Paul Hannon
2
sempre inclua os arquivos de cabeçalho do sistema após os arquivos locais.
Vincent

Respostas:

317

adicionar #include <iostream>ao início de io.cpptambém.

unkulunkulu
fonte
5
O iostream deve ser incluído (direta ou indiretamente). Caso contrário, como o compilador saberia onde encontrar std :: cout.
AK
1
Eu entendo o que você está dizendo. Obrigado. Embora como eu consegui meu outro proj. trabalhar sem incluí-lo no outro .cpp também? Eu atualizei o OP na parte inferior.
Paul Hannon
1
Você provavelmente o incluiu indiretamente. É sempre necessário.
Sebastian Hoffmann
2
Eu também precisava incluí-lo em um arquivo .h !! Graças
user391339
3
Também tem que ser incluído após stdafx.h, e não antes
Alex
16

Lembre-se também de que deve ser:

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

e não o contrário

#include <iostream>
#include "stdafx.h"
Jukes
fonte
1
De onde "stdafx.h"vem? OP não utiliza tais cabeçalhos
KABoissonneault
Eu tive o mesmo erro e tentei trocar os lugares deles para ficar OK.
Ali Ahmadvand
1

Eu tive um problema semelhante e, por acaso, tive que adicionar uma entrada extra cmakepara incluir os arquivos.

Como eu também estava usando a biblioteca zmq, tive que adicioná-lo também às bibliotecas incluídas.

Marco Rubio
fonte