cout bukan anggota dari std

200

Saya berlatih menggunakan file mulitple dan file header dll. Jadi saya punya proyek ini yang mengambil dua angka dan kemudian menambahkannya. Cukup mudah.

Ini file-file saya:

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

Kesalahan muncul di io.cpp. Kesalahan sebenarnya adalah:

masukkan deskripsi gambar di sini

Adakah yang tahu mengapa ini bisa terjadi? Terima kasih.

EDIT: Saya membuat proyek kecil kemarin dengan jumlah file yang sama (2 .cpp dan 1.h) dan saya tidak memasukkan header iostream di .cpp lainnya dan masih dikompilasi dan berjalan dengan baik.

Paul Hannon
sumber
3
Re edit Anda: maka Anda mengkompilasi proyek itu secara berbeda. Termasuk iostream dalam file cpp kedua Anda diperlukan seperti yang Anda miliki di sini. Mungkin Anda memiliki yang termasuk dalam .hfile terakhir kali.
Mat
Ya, itu bekerja dengan baik sekarang, terima kasih atas tanggapan cepat semua orang! :)
Paul Hannon
2
selalu sertakan file header sistem setelah file lokal Anda.
Vincent

Jawaban:

318

tambahkan #include <iostream>ke awal io.cppjuga.

unkulunkulu
sumber
5
iostream harus dimasukkan (langsung atau tidak langsung). Kalau tidak, bagaimana kompiler akan tahu di mana menemukan std :: cout.
AK
1
Saya mengerti apa yang Anda katakan. Terima kasih. Meskipun bagaimana saya mendapatkan proj saya yang lain. untuk bekerja tanpa menyertakannya di .cpp lainnya juga? Saya memperbarui OP di bagian bawah.
Paul Hannon
1
Anda mungkin memasukkannya secara tidak langsung. Itu SELALU diperlukan.
Sebastian Hoffmann
2
Saya perlu memasukkannya ke dalam file .h juga !! Terima kasih
user391339
3
juga harus dimasukkan setelah stdafx.h, bukan sebelum
Alex
16

Ingat juga bahwa itu harus:

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

dan bukan sebaliknya

#include <iostream>
#include "stdafx.h"
Jukes
sumber
1
Dari mana datangnya "stdafx.h"? OP tidak menggunakan tajuk seperti itu
KABoissonneault
Saya memiliki kesalahan yang sama dan saya mencoba bertukar tempat mereka menjadi OK.
Ali Ahmadvand
1

Saya memiliki masalah yang sama dan ternyata saya harus menambahkan entri tambahan cmakeuntuk memasukkan file.

Karena saya juga menggunakan perpustakaan zmq, saya harus menambahkan ini ke perpustakaan yang disertakan juga.

Marco Rubio
sumber