//#include<iostream>
using namespace std;
#include<string>
class Expr{ } ;
class NumExpr : public Expr {
public :
NumExpr( string v ) ;
string name( ) ;
private :
int number;
friend ostream& operator<< ( ostream & s, const NumExpr & num) ;
} ;
NumExpr:: NumExpr ( string n ) {
number = 10 ;
}
string NumExpr:: name ( ) {
return "num" ;
}
ostream & operator<< ( ostream & s, const NumExpr & num) {
s << num.number ;
return s;
}
int main( )
{
//NumExpr obj("hello");
//cout<<obj;
return 0 ;
}
Ly8jaW5jbHVkZTxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2luY2x1ZGU8c3RyaW5nPgoKY2xhc3MgRXhwcnt9OwpjbGFzcyBOdW1FeHByIDogcHVibGljIEV4cHIgewogICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgTnVtRXhwciggc3RyaW5nIHYgKTsKICAgICAgICAgICAgc3RyaW5nIG5hbWUoKTsKICAgICAgICBwcml2YXRlOgogICAgICAgICAgICBpbnQgbnVtYmVyOwogICAgICAgICAgICBmcmllbmQgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtICZzLCBjb25zdCBOdW1FeHByICZudW0pOwogICAgfTsKCiBOdW1FeHByOjpOdW1FeHByKCBzdHJpbmcgbiApIHsKICAgICAgICBudW1iZXIgPSAxMDsKICAgIH0KICAgIHN0cmluZyBOdW1FeHByOjpuYW1lKCkgewogICAgICAgIHJldHVybiAibnVtIjsKICAgIH0KICAgIG9zdHJlYW0gJiBvcGVyYXRvcjw8KG9zdHJlYW0gJnMsIGNvbnN0IE51bUV4cHIgJm51bSkgewogICAgICAgIHMgPDwgbnVtLm51bWJlcjsKICAgICAgICByZXR1cm4gczsKICAgIH0KaW50IG1haW4oKQp7CiAgICAgLy9OdW1FeHByIG9iaigiaGVsbG8iKTsKICAgICAvL2NvdXQ8PG9iajsKICAgICAKCiAgICAgcmV0dXJuIDA7Cn0=
compilation info
prog.cpp: In function ‘std::ostream& operator<<(std::ostream&, const NumExpr&)’:
prog.cpp:22: error: no match for ‘operator<<’ in ‘s << num->NumExpr::number’
prog.cpp:21: note: candidates are: std::ostream& operator<<(std::ostream&, const NumExpr&)
stdout