- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图理解为什么包含 iosfwd 会导致包含标准字符串的输出流不起作用。
// hc_list.h file
#ifndef HC_LIST_H
#define HC_LIST_H
#include <cstdlib>
#include <iosfwd> // including this file makes the output operator throw errors
#include <list>
template <typename T>
class hcList
{
private:
std::list<T> selfList ; // a single internal STL list to hold the values
public:
hcList(void) {} ;
~hcList(void){} ;
template <typename U> friend std::ostream& operator<<(std::ostream &, const hcList<U> &) ;
} ;
template <typename U>
std::ostream& operator<<(std::ostream &out, const hcList<U> &outList)
{
out << "test" << std::endl ; // this line throws two errors, stated below
return out ;
}
#endif // HC_LIST_H
这段代码包含在main.cpp文件中,其中main函数如下:
// main.cpp file
#include <iostream>
#include "hc_list.h"
int main()
{
std::cout << "Begin Test" << std::endl;
return 0;
}
为了实际使用此代码并生成错误,需要一个包含列表头文件的空 cpp 文件。
// anyNamedFile.cpp file
#include "hc_list.h"
当我尝试编译时,我收到以下错误:
error: no match for 'operator<<' in 'out<< "test"'
error: 'endl' is not a part of 'std'
是什么导致 std 命名空间搞砸了,不再允许我输出字符串?
最佳答案
这里有两个问题。第一个问题是您正在使用 std::endl
, 但这是在 <ostream>
中定义的, 这不包括在内。
第二个问题是您只包含标题 <iosfwd>
,它向前声明了许多 iostream 类型。前向声明让编译器知道类型存在。但是,您正在尝试使用这些类型的功能。既然你这样做了,你应该包括 <ostream>
, 而不是 <iosfwd>
. <ostream>
包含 std::endl
,所以它应该处理所有事情。
关于c++ - 包含 <iosfwd> 似乎会导致命名空间问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10565550/
简介 输入输出历来都是语言的重要部分,在C++中,该库也是占据了相当大的一部分。 C++的输入输出库是其遵循面向对象设计的结果,并结合了泛型编程。 以下是这些库类的关系图(箭头标示继承,白框表示
我试图理解为什么包含 iosfwd 会导致包含标准字符串的输出流不起作用。 // hc_list.h file #ifndef HC_LIST_H #define HC_LIST_H #include
header 是什么?用于?为什么有必要? 有什么例子吗? 最佳答案 这样您就可以在自己的头文件中声明依赖于 iostream 类型声明的方法,而无需 #include iostream 头文件本身
我使用自制软件在 MacOS 10.13 上安装了 LLVM: brew install --with-toolchain llvm 然后我根据 this guide 导出了所需的变量. export
我使用 Eclipse 成功地使用来自 this question 的链接构建了 Botan。 ,但是,Android Studio 应该取代 Eclipse 进行 Android 开发,所以我现在试
您好,我在标准 Microsoft 文件“iosfwd”和 atlconv.h 中遇到了很多语法错误。(我在下面粘贴了一些错误)::真的不明白标准文件 iosfwd 和 atlconv 中出现此类错误
我正尝试在我的 C 程序中使用 GMP 库,如下所示: /* gmp test */ #include main() { printf("yay, it works!\n"); } 我正在 Li
我刚刚在 visual studio 2015 中输入了这个“hello world”c++ 程序: #include int main() { using namespace std;
我有以下名为 Temp.cpp 的小文件: #include int main() { return 0; } 我正在尝试使用 WDK 7.1 在 Windows XP 免费构建环境中使用以下命令行
我是一名优秀的程序员,十分优秀!