cout은 std의 회원이 아닙니다


199

여러 파일과 헤더 파일 등을 사용하여 연습하고 있습니다. 그래서이 프로젝트에는 두 개의 숫자를 취한 다음 추가합니다. 꽤 간단합니다.

내 파일은 다음과 같습니다.

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)로 작은 프로젝트를 만들었고 다른 .cpp에 iostream 헤더를 포함시키지 않았지만 여전히 컴파일되어 정상적으로 실행되었습니다.


3
편집을 다시하십시오 : 그런 다음 해당 프로젝트를 다르게 컴파일했습니다. 두 번째 CPP 파일에 포함 iostream입니다 필요 당신이 여기 가지고. 어쩌면 .h지난번 에 파일에 포함했을 수도 있습니다 .
Mat

네, 빠른 답변 감사합니다. :)
Paul Hannon

2
항상 로컬 파일 뒤에 시스템 헤더 파일을 포함하십시오.
Vincent

답변:


317

#include <iostream>시작 부분에 추가하십시오 io.cpp.


5
iostream은 (직접 또는 간접적으로) 포함되어야합니다. 그렇지 않으면 컴파일러가 std :: cout을 찾을 위치를 어떻게 알 수 있습니까?
AK

1
당신이 무슨 말을하는지 이해합니다. 감사. 비록 다른 프로젝트를 어떻게 얻었습니까. 다른 .cpp에도 포함시키지 않고 작동합니까? 하단에서 OP를 업데이트했습니다.
Paul Hannon

1
아마도 간접적으로 포함했을 것입니다. 항상 필요합니다.
Sebastian Hoffmann

2
나는 그것을 .h 파일에도 포함시켜야했다!! 감사합니다
user391339

3
또한 이전이 아니라 이후 stdafx.h에 포함 되어야합니다.
Alex

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.