cout no es miembro de std

3 minutos de lectura

avatar de usuario
Pablo Hannon

Estoy practicando usando varios 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:

principal.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;
}

añadir.h

#ifndef ADD_H_INCLUDED
#define ADD_H_INCLUDED

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

#endif // #ifndef ADD_H_INCLUDED

El error aparece en io.cpp. Los errores exactos son:

ingrese la descripción de la imagen aquí

¿Alguien tiene alguna idea de por qué puede estar pasando esto? 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 aun así se compiló y funcionó bien.

  • Re su edición: luego compiló ese proyecto de manera diferente. Incluir iostream en su segundo archivo cpp es requerido como lo tienes aquí. Tal vez tenías eso incluido en el .h archivo la última vez.

    – Estera

    7 de julio de 2012 a las 14:58

  • Sí, está funcionando muy bien ahora, ¡gracias por las respuestas rápidas a todos! 🙂

    –Paul Hannon

    7 julio 2012 a las 15:01

  • incluya siempre los archivos de encabezado del sistema después de sus archivos locales.

    – Vicente

    6 de junio de 2017 a las 13:42

agregar #include <iostream> al comienzo de io.cpp también.

  • iostream tiene que ser incluido (directa o indirectamente). De lo contrario, ¿cómo sabría el compilador dónde encontrar std::cout?

    – Ak

    7 de julio de 2012 a las 14:56

  • Entiendo lo que dices. Gracias. Aunque, ¿cómo obtuve mi otro proyecto? trabajar sin incluirlo en el otro .cpp también? Actualicé OP en la parte inferior.

    –Paul Hannon

    7 de julio de 2012 a las 14:58

  • Probablemente lo hayas incluido indirectamente. SIEMPRE es obligatorio.

    – Sebastián Hoffmann

    7 de julio de 2012 a las 14:58

  • ¡Necesitaba incluirlo en un archivo .h también! Gracias

    – usuario391339

    20 de diciembre de 2014 a las 3:06

  • también tiene que ser incluido después stdafx.hno antes

    – Alex

    15/04/2018 a las 20:30

Recuerda también que debe ser:

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

y no al revés

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

  • Donde hace "stdafx.h" ¿viene de? OP no usa tales encabezados

    – KABoissonneault

    20/09/2018 a las 19:50

  • Tuve el mismo error e intenté cambiar sus lugares para estar bien.

    –Ali Ahmadvand

    3 oct 2018 a las 12:00

Tuve un problema similar y resultó que tuve 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.

Agregar include <iostream> donde necesitas usar std::cout o std::cin. Para probar que otras funciones también requieren encabezados, se lo explicaré usando un fragmento de código.

int main()
{
    float a = 42.63;
    std::cout<<a<<std::setprecision(0)<<std::endl;
    return 0;
}

Este código es completamente sin encabezadosy generará algunos errores:

ingrese la descripción de la imagen aquí

Así que esto prueba que std::setprecison y std::cout o std::cin deben ser llamados por sus “cabeceras madre”.

  • # include <iostream> es para std::cout y std::cin

  • # include <iomanip> es para std::setprecision


Conclusión:

Antes de intentar utilizar cualquiera de estas funciones, debe importarlos desde el encabezado madre.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad