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.