cout no es miembro de std

200

Estoy practicando el uso de múltiples archivos y archivos de encabezado, etc. Así que tengo este proyecto que toma dos números y luego los agrega. Bastante simple.

Aquí están mis archivos:

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

El error se muestra en io.cpp. Los errores exactos son:

ingrese la descripción de la imagen aquí

¿Alguien tiene alguna idea de por qué esto puede estar sucediendo? Gracias.

EDITAR: Ayer hice un pequeño proyecto con la misma cantidad de archivos (2 .cpp y 1.h) y no incluí el encabezado iostream en el otro .cpp y todavía se compiló y funcionó bien.

Paul Hannon
fuente
3
Vuelva a editar: luego compiló ese proyecto de manera diferente. Incluyendo iostream en su segundo archivo CPP se requiere que lo tienes aquí. Tal vez tuviste esa inclusión en el .harchivo la última vez.
Mat
Sí, está funcionando muy bien ahora, ¡gracias por las respuestas rápidas a todos! :)
Paul Hannon
2
siempre incluya archivos de encabezado del sistema después de sus archivos locales.
Vincent

Respuestas:

318

añadir #include <iostream> al inicio de io.cpptambién.

unkulunkulu
fuente
55
Se debe incluir iostream (directa o indirectamente). De lo contrario, ¿cómo sabría el compilador dónde encontrar std :: cout?
AK
1
Entiendo lo que dices. Gracias. Aunque, ¿cómo conseguí mi otro proyecto? trabajar sin incluirlo en el otro .cpp también? Actualicé OP en la parte inferior.
Paul Hannon
1
Probablemente lo hayas incluido indirectamente. SIEMPRE se requiere.
Sebastian Hoffmann
2
¡También necesitaba incluirlo en un archivo .h! Gracias
user391339
3
también debe incluirse después stdafx.h, no antes
Alex
16

También recuerde que debe ser:

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

y no al revés

#include <iostream>
#include "stdafx.h"
Jukes
fuente
1
De donde "stdafx.h"viene OP no utiliza tales encabezados
KABoissonneault
Tuve el mismo error e intenté intercambiar sus lugares para estar bien.
Ali Ahmadvand
1

Tuve un problema similar y resultó que tenía que agregar una entrada adicional en cmake para incluir los archivos.

Como también estaba usando la biblioteca zmq, también tuve que agregar esto a las bibliotecas incluidas.

Marco Rubio
fuente