Cout 不是 STD 的成员

cout is not a member of std

提问人:Paul Hannon 提问时间:7/7/2012 最后编辑:Ernestas GruodisPaul Hannon 更新时间:8/13/2022 访问量:421313

问:

我正在练习使用多个文件和头文件等。所以我有这个项目,它需要两个数字,然后将它们相加。很简单。

这是我的文件:

主 .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;
}

地址:h

#ifndef ADD_H_INCLUDED
#define ADD_H_INCLUDED

int readNumber();
void writeAnswer(int x);

#endif // #ifndef ADD_H_INCLUDED

错误显示在 io.cpp 中。确切的错误是:

enter image description here

有谁知道为什么会发生这种情况?谢谢。

编辑:我昨天用相同数量的文件(2 个 .cpp 和 1.h)做了一个小项目,我没有在另一个 .cpp 中包含 iostream 标头,它仍然编译并运行良好。

C++ IO STD 成员 COUT

评论

4赞 Mat 7/7/2012
重新编辑:然后您以不同的方式编译该项目。在第二个 cpp 文件中包含 iostream 是必需的,因为您在此处。也许您上次在文件中包含了该内容。.h
0赞 Paul Hannon 7/7/2012
是的,它现在运行良好,感谢大家的快速回复!:)
2赞 Vincent 6/6/2017
始终在本地文件之后包含系统头文件。

答:

428赞 unkulunkulu 7/7/2012 #1

添加到太的开头。#include <iostream>io.cpp

评论

6赞 A. K. 7/7/2012
必须包含 IOSTREAM(直接或间接)。否则编译器怎么会知道在哪里可以找到 std::cout。
1赞 Paul Hannon 7/7/2012
我明白你在说什么。谢谢。虽然我是怎么得到我的另一个项目的。在不将其包含在其他 .cpp 中的情况下工作?我在底部更新了 OP。
2赞 Sebastian Hoffmann 7/7/2012
您可能已经间接地包含了它。它始终是必需的。
2赞 user391339 12/20/2014
我还需要将其包含在 .h 文件中!!谢谢
4赞 Alex 4/16/2018
此外,它必须包含在 之后,而不是之前stdafx.h
1赞 Marco Rubio 5/23/2018 #2

我遇到了类似的问题,结果证明我必须添加一个额外的条目才能包含文件。cmake

由于我也在使用 zmq 库,因此我也必须将其添加到包含的库中。

26赞 Jukes 9/21/2018 #3

如果将预编译标头与 Microsoft 的编译器 (MSVC) 一起使用,请记住,它必须是:

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

而不是相反:

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

换言之,预编译的头文件必须始终排在第一位。(如果您忘记了,编译器应该会给你一个错误,专门解释这一点。