我想用虚函数机制使用友元?请问GG JJ该怎么办?
我的错误代码:
class a
{
virtual friend ostream& operator << (ostream& os,int a){};
}
class b: public a
{
friend ostream& operator << (ostream& os,int a){};
}
错误信息:
error C2575: '<<' : only member functions and bases can be virtual
我的错误代码:
class a
{
virtual friend ostream& operator << (ostream& os,int a){};
}
class b: public a
{
friend ostream& operator << (ostream& os,int a){};
}
错误信息:
error C2575: '<<' : only member functions and bases can be virtual
a* a0 = new b;cout<<a0<<endl;时调用b中的函数。
因为:
class a;
class b:public a;
{}
class c:public a;
{}
class d:public a;
{}
a a0[3] = {new b, new c, new d};
for(int i=0; i<3; i++)
cout<<a0[i];
#include <iostream>
using namespace std;class a
{
friend ostream& operator<<(ostream& os,a& classa){ classa.output(os); return os; };
virtual void output(ostream& os){os<<"a";}
};
class b:public a
{
friend ostream& operator<<(ostream& os,a& classb){ classb.output(os); return os; };
virtual void output(ostream& os){os<<"b";}
};
class c:public a
{
friend ostream& operator<<(ostream& os,a& classc){ classc.output(os); return os; };
virtual void output(ostream& os){os<<"c";}
};
class d:public a
{
friend ostream& operator<<(ostream& os,a& classd){ classd.output(os); return os; };
virtual void output(ostream& os){os<<"d";}
};int main(int argc, char* argv[])
{
a* a0[3] = {new b(), new c(), new d()};
for(int i=0; i<3; i++)
cout<<(*a0[i])<<endl;
return 0;
}输出结果:
b
c
d