cout ไม่ใช่สมาชิกของ std


200

ฉันกำลังฝึกใช้ไฟล์ mulitple และไฟล์ส่วนหัวเป็นต้นดังนั้นฉันจึงมีโครงการนี้ซึ่งใช้ตัวเลขสองตัวแล้วเพิ่มเข้าไป ค่อนข้างง่าย

นี่คือไฟล์ของฉัน:

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

ข้อผิดพลาดปรากฏขึ้นใน io.cpp ข้อผิดพลาดที่แน่นอนคือ:

ป้อนคำอธิบายรูปภาพที่นี่

ไม่มีใครมีความคิดว่าทำไมสิ่งนี้อาจเกิดขึ้น? ขอบคุณ

แก้ไข: ฉันทำโครงการเล็ก ๆ เมื่อวานนี้ด้วยจำนวนไฟล์เท่ากัน (2 .cpp และ 1.h) และฉันไม่ได้รวมส่วนหัวของ iostream ไว้ใน. cpp อื่น ๆ และมันก็ยังรวบรวมและรันได้ดี


3
การแก้ไขของคุณอีกครั้ง: จากนั้นคุณรวบรวมโครงการนั้นแตกต่างกัน รวมทั้ง iostream ในไฟล์ CPP ที่สองของคุณจะต้องเป็นคุณได้ที่นี่ บางทีคุณอาจมีสิ่งนั้นรวมอยู่ใน.hไฟล์ครั้งล่าสุด
จ้า

ใช่มันใช้งานได้ดีในตอนนี้ขอบคุณสำหรับการตอบกลับอย่างรวดเร็วทุกคน! :)
Paul Hannon

2
รวมไฟล์ส่วนหัวของระบบไว้เสมอหลังจากไฟล์โลคัลของคุณ
Vincent

คำตอบ:


320

เพิ่ม#include <iostream>ไปยังจุดเริ่มต้นของio.cppเกินไป


5
ต้องรวม iostream (โดยตรงหรือโดยอ้อม) มิฉะนั้นคอมไพเลอร์จะรู้ได้อย่างไรว่าจะหา std :: cout ได้ที่ไหน
AK

1
ฉันเข้าใจสิ่งที่คุณพูด ขอบคุณ แม้ว่าฉันจะได้รับ proj อื่น ๆ ของฉันได้อย่างไร ทำงานโดยไม่รวมไว้ใน. cpp อื่นด้วยหรือไม่ ฉันอัพเดท OP ที่ด้านล่าง
พอล Hannon

1
คุณอาจรวมไว้ในทางอ้อม มันเป็นสิ่งที่จำเป็นเสมอ
เซบาสเตียนฮอฟฟ์มันน์

2
ฉันต้องการรวมไว้ในไฟล์. h เช่นกัน !! ขอบคุณ
user391339

3
นอกจากนี้ยังจะต้องมีการรวมหลังจากstdafx.hไม่ก่อน
อเล็กซ์

16

โปรดจำไว้ว่าต้องเป็น:

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

ไม่ใช่วิธีอื่น ๆ

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

1
ในกรณีที่ไม่"stdafx.h"มาจากไหน? OP ไม่ใช้ส่วนหัวดังกล่าว
KABoissonneault

ฉันมีข้อผิดพลาดเดียวกันและฉันพยายามที่จะแลกเปลี่ยนสถานที่ของพวกเขาเพื่อตกลง
Ali Ahmadvand

1

ฉันมีปัญหาที่คล้ายกันและปรากฎว่าฉันต้องเพิ่มรายการพิเศษในcmakeการรวมไฟล์

เนื่องจากฉันใช้ไลบรารี zmq ด้วยฉันจึงต้องเพิ่มสิ่งนี้ไปยังห้องสมุดที่รวมอยู่ด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.