提问人:Paul Hannon 提问时间:7/7/2012 最后编辑:Ernestas GruodisPaul Hannon 更新时间:8/13/2022 访问量:421313
Cout 不是 STD 的成员
cout is not a member of std
问:
我正在练习使用多个文件和头文件等。所以我有这个项目,它需要两个数字,然后将它们相加。很简单。
这是我的文件:
主 .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 中。确切的错误是:
有谁知道为什么会发生这种情况?谢谢。
编辑:我昨天用相同数量的文件(2 个 .cpp 和 1.h)做了一个小项目,我没有在另一个 .cpp 中包含 iostream 标头,它仍然编译并运行良好。
答:
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"
换言之,预编译的头文件必须始终排在第一位。(如果您忘记了,编译器应该会给你一个错误,专门解释这一点。
评论
.h