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

添加

#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
重新编辑:然后您对该项目进行了不同的编译。由于在此处具有iostream,因此需要在第二个cpp文件中包含iostream 。也许您.h上次在文件中包含了该内容。
2012年

是的,它现在工作得很好,谢谢大家的快速回复!:)
保罗·汉农

2
始终在本地文件之后包括系统头文件。
文森特

Answers:


316

也添加#include <iostream>到开始io.cpp


5
iostream必须(直接或间接)包括在内。否则,编译器将如何知道在哪里可以找到std :: cout。
2012年

1
我明白你在说什么。谢谢。虽然我怎么得到我的其他项目。工作而不将其包含在其他.cpp中吗?我在底部更新了OP。
保罗·汉农

1
您可能已经间接包含了它。始终需要。
塞巴斯蒂安·霍夫曼

2
我还需要将其包含在.h文件中!!谢谢
user391339 2014年

3
也必须在之后stdafx.h,而不是之前
Alex

16

还请记住,它必须是:

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

而不是相反

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

1
哪里"stdafx.h"来的?OP不使用此类标头
KABoissonneault

我遇到了同样的错误,因此尝试交换他们的位置以确保一切正常。
Ali Ahmadvand '18

1

我有一个类似的问题,结果是我不得不在其中添加一个额外的条目cmake以包含文件。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.