G'day!
On Wed, Sep 03, 1997 at 03:32:08PM -0500, Bode, Wyatt wrote:
Bode, Wyatt> How the heck do you overload the '<<' operator in C++ to be used by
Bode, Wyatt> cout? I tried the following:
Just a quick snip from my code (with G++):
enum OperatorEnum /* operator types */
{ /*{{{*/
O_UNKNOWN,
O_MUL,
......
O_LAST
};
char *OperatorNames[O_LAST] = { "UNKNOWN", "*" .... };
class Operator
{ /*{{{*/
public:
Operator( int t = O_UNKNOWN ) : oper( (t < O_UNKNOWN || t >=
O_LAST) ? O_UNKNOWN : OperatorEnum(t) ) {};
// this is a way to do it.....
friend ostream &operator<< ( ostream &s, const Operator &t )
{
return s << OperatorNames[t.oper];
}
inline bool operator==(
OperatorEnum x ) const { return oper == x; }
inline bool operator!=( OperatorEnum x ) const { return oper != x; }
inline bool operator==( const Operator x ) const { return
oper == x.oper; }
inline bool operator!=( const Operator x ) const { return oper !=
x.oper; }
inline int value( void ) const { return oper; }
private:
OperatorEnum oper;
/*}}}*/
};
Grtnx Ric
PS This is from a mobprog implementation in C++... Would there be interest in
a snippet (more a chunk... ;) of it? Espec. for the C++ porters??
--
-----+++++*****************************************************+++++++++-------
- Ric Klaren - ia_ric@cs.utwente.nl ------- klaren@cs.utwente.nl --------------
-----+++++*****************************************************+++++++++-------
``Why don't we just invite them to dinner and massacre them all when
they're drunk?''
``You heard the man. There's seven hundred thousand of them.''
``Ah? So it'd have to be something simple with pasta, then.''
-------------------------------------------------------------------------------
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST