Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

identifier "ostream" is undefined error [closed]

i need to implement a number class that support operator << for output. i have an error: "identifier "ostream" is undefined" from some reason eventhough i included and try also

here the header file:

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

why the compiler isnt recognize ostream in the friend function?

like image 352
aviadch Avatar asked May 14 '13 11:05

aviadch


1 Answers

You need to fully qualify the name ostream with the name of the namespace that class lives in:

    std::ostream
//  ^^^^^

So your operator declaration should become:

friend std::ostream& operator << (std::ostream &os, const Number &f);
//     ^^^^^                      ^^^^^

Alternatively, you could have a using declaration before the unqualified name ostream appears:

using std::ostream;

This would allow you to write the ostream name without full qualification, as in your current version of the program.

like image 71
Andy Prowl Avatar answered Sep 27 '22 15:09

Andy Prowl