cout n'est pas membre de std

200

Je m'entraîne à utiliser plusieurs fichiers et des fichiers d'en-tête, etc. J'ai donc ce projet qui prend deux nombres, puis les ajoute. Assez simple.

Voici mes fichiers:

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

L'erreur apparaît dans io.cpp. Les erreurs exactes sont:

entrez la description de l'image ici

Quelqu'un a-t-il une idée de pourquoi cela peut se produire? Merci.

EDIT: J'ai fait un petit projet hier avec la même quantité de fichiers (2 .cpp et 1.h) et je n'ai pas inclus l'en-tête iostream dans l'autre .cpp et il a toujours compilé et s'est bien déroulé.

Paul Hannon
la source
3
Re votre édition: vous avez ensuite compilé ce projet différemment. Il est nécessaire d' inclure iostream dans votre deuxième fichier cpp car vous l'avez ici. Peut-être que vous aviez cette inclusion dans le .hfichier la dernière fois.
Mat
Oui, ça fonctionne très bien maintenant, merci pour les réponses rapides à tous! :)
Paul Hannon
2
incluez toujours les fichiers d'en-tête du système après vos fichiers locaux.
Vincent

Réponses:

318

ajouter #include <iostream>au début de io.cpptrop.

unkulunkulu
la source
5
iostream doit être inclus (directement ou indirectement). Sinon, comment le compilateur saurait-il où trouver std :: cout.
AK
1
Je comprends ce que vous dites. Merci. Mais comment ai-je obtenu mon autre projet. travailler sans l'inclure dans les autres .cpp aussi? J'ai mis à jour OP en bas.
Paul Hannon
1
Vous l’avez probablement inclus indirectement. C'est TOUJOURS obligatoire.
Sebastian Hoffmann
2
J'avais également besoin de l'inclure dans un fichier .h !! Merci
user391339
3
il doit également être inclus après stdafx.h, pas avant
Alex
16

N'oubliez pas non plus que ce doit être:

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

et non l'inverse

#include <iostream>
#include "stdafx.h"
Jukes
la source
1
D'où "stdafx.h"vient-il? OP n'utilise pas de tels en
KABoissonneault
J'ai eu la même erreur et j'ai essayé d'échanger leurs places pour être OK.
Ali Ahmadvand
1

J'ai eu un problème similaire et il s'est avéré que je devais ajouter une entrée supplémentaire cmakepour inclure les fichiers.

Comme j'utilisais également la bibliothèque zmq, j'ai dû également l'ajouter aux bibliothèques incluses.

Marco Rubio
la source