Avi*_*nik 8 c++ compiler-errors operators ostream
我需要实现一个支持operator << for output的数字类.我有一个错误:"标识符"ostream"未定义"从某种原因,尽管我包括并尝试
这里的头文件:
Number.h
#ifndef NUMBER_H
#define NUMBER_H
#include <iostream>
class Number{
public:
//an output method (for all type inheritance from number):
virtual void show()=0;
//an output operator:
friend ostream& operator << (ostream &os, const Number &f);
};
#endif
Run Code Online (Sandbox Code Playgroud)
为什么编译器不能识别友元函数中的ostream?
And*_*owl 14
您需要ostream使用类所在的命名空间的名称完全限定名称:
std::ostream
// ^^^^^
Run Code Online (Sandbox Code Playgroud)
所以你的运营商声明应该变成:
friend std::ostream& operator << (std::ostream &os, const Number &f);
// ^^^^^ ^^^^^
Run Code Online (Sandbox Code Playgroud)
或者,您可以using在ostream出现非限定名称之前声明:
using std::ostream;
Run Code Online (Sandbox Code Playgroud)
这将允许您在ostream没有完全限定的情况下编写名称,就像在当前版本的程序中一样.
| 归档时间: |
|
| 查看次数: |
10029 次 |
| 最近记录: |