cout non è un membro di std


200

Mi sto esercitando a usare file mulitple e file header ecc. Quindi ho questo progetto che prende due numeri e poi li aggiunge. Abbastanza semplice.

Ecco i miei file:

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'errore viene visualizzato in io.cpp. Gli errori esatti sono:

inserisci qui la descrizione dell'immagine

Qualcuno ha idea del perché ciò potrebbe accadere? Grazie.

EDIT: ieri ho realizzato un piccolo progetto con la stessa quantità di file (2 .cpp e 1.h) e non ho incluso l'intestazione iostream nell'altro .cpp e si è comunque compilato e funzionava bene.


3
Per quanto riguarda la modifica: hai quindi compilato il progetto in modo diverso. Compreso iostream nel file cpp secondo viene richiesto come si deve qui. Forse hai avuto l'inclusione nel .hfile l'ultima volta.
Mat

Sì, ora funziona alla grande, grazie per le risposte rapide a tutti! :)
Paul Hannon,

2
includere sempre i file di intestazione del sistema dopo i file locali.
Vincent,

Risposte:


318

aggiungere #include <iostream>anche all'inizio io.cpp.


5
iostream deve essere incluso (direttamente o indirettamente). Altrimenti come farebbe il compilatore a sapere dove trovare std :: cout.
AK,

1
Capisco quello che stai dicendo. Grazie. Ma come ho ottenuto l'altro mio proj. lavorare senza includerlo anche nell'altro .cpp? Ho aggiornato l'OP in basso.
Paul Hannon,

1
Probabilmente l'hai incluso indirettamente. È SEMPRE richiesto.
Sebastian Hoffmann,

2
Avevo bisogno di includerlo anche in un file .h !! Grazie
user391339

3
inoltre deve essere incluso dopo stdafx.h, non prima
Alex

16

Ricorda inoltre che deve essere:

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

e non viceversa

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

1
Da dove "stdafx.h"viene OP non usa queste intestazioni
KABoissonneault,

Ho avuto lo stesso errore e ho provato a scambiare i loro posti per essere OK.
Ali Ahmadvand,

1

Ho avuto un problema simile e ho scoperto che dovevo aggiungere una voce in più cmakeper includere i file.

Dal momento che stavo anche usando la libreria zmq ho dovuto aggiungere anche questo alle librerie incluse.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.