首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

operator<< 重载和多态解决办法

2012-03-30 
operator 重载和多态我的类层次结构:CPic--CLine------------CRectangle------------CEllipse--CPol

operator<< 重载和多态
我的类层次结构:
CPic<--CLine<------------CRectangle
  <------------CEllipse
  <--CPolygon

其中CPic是虚基类
现在想遍历一个存放CPic*的Vector并调用of<<(**it);
其中vector<CPic*>::iterator it; ofstream of;
问题是operator<<重载是写在类外面的,
怎样实现子类对象的<<行为多态呢?


   


[解决办法]

C/C++ code
ostream& operator << (ostream& os, const CPic& obj){  obj.save(os);  return os;}
[解决办法]
1) 把 << 改写到类里

2) 如1楼


[解决办法]
多态不是分运行期和编译期吗?
你把<<写在类外,那就只能多重载几个版本,
否则用运行期的多态就只能用虚函数了,职能写在
类的内部.

楼上的两位,请问:用CPic& obj调用虚函数去实现多态吗?

引用????????
引用????????
引用????????
[解决办法]
楼主这样试试:
ostream& operator << (ostream& os, CPic* obj)
{
obj.save(os);
return os;
}

CPic中:
virtual void save(ostream& os)const=0;

然后:调用of < <(*it);

热点排行