请各位大侠帮我看看为什么我的程序编译时说ostream和istream is ambiguous symbol

nfzhlk 2010-01-05 11:02:11
#ifndef H_ADDRESS_H_ABCDE
#define H_ADDRESS_H_ABCDE

#include<iostream>
#include <list>
using namespace std;
struct Record
{
string name;
string tel;
};
class RecordList:public list<Record*>
{
friend ostream& operator <<(ostream & os,const RecordList& c_rl);
public:
void clear( )
{
iterator iter;
iterator it_end=end( );
for(iter=begin( );iter!=it_end;iter++)
{
delete *iter;
}
list<Record*>::clear( );
}
iterator erase(iterator where)
{
delete *where;
return list<Record*>::erase(where);
}
~RecordList( )
{
this->clear( );
}
};
#endif H_ADDRESS_H_ABCDE
...全文
382 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
nfzhlk 2010-01-05
  • 打赏
  • 举报
回复
谢谢,可是还是不行
tanmeining 2010-01-05
  • 打赏
  • 举报
回复

class iostream : public istream, public ostream {
public:
explicit iostream (streambuf * sb);
virtual ~iostream ();
}

The class ostream inherits all the internal fields from its parent classes ios_base and ios:
是否应该include <ios>/<ios_base>呢?我也不是太懂这个,还请高手多多解释下。
tanmeining 2010-01-05
  • 打赏
  • 举报
回复
<fstream>库包含了三个基本的类:ifstream, ofstream和fstream。这三个类分别代表一个输入文件,一个输出文件,以及一个输入输出文件。Ifstream类支持>>操作符,ofstream类支持<<操作符,fstream类同时支持>>和<<操作符
冻结 2010-01-05
  • 打赏
  • 举报
回复
#include <fstream>
jkx01whg 2010-01-05
  • 打赏
  • 举报
回复
linux:g++(GCC)3.4.6编译楼主的代码正常通过,除了提示缺少main()函数
小小攻城师 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 nfzhlk 的回复:]
请教各位大侠,能给我个邮箱吗?我把所有的源代码发过去,运行一下,到底是不是只有
Vc++6.0运行会报错呢,这个交流太不方便了,我都不能把所有的源程序贴上,我的邮箱是nfntt@163.com
[/Quote]
刚才我在我的vs05上跑了一下,没有任何问题
楼主换编译器吧。vc6.0对标准c++的支持不太好
如果楼主想学标准c++就换vs吧。
还是老话,珍惜生命,远离vc6
Contemplating 2010-01-05
  • 打赏
  • 举报
回复
不是你的错,是工具的问题...
  • 打赏
  • 举报
回复
编译没有问题,你
#include <iostream>
using namespace std;
已经可以了。
nfzhlk 2010-01-05
  • 打赏
  • 举报
回复
请教各位大侠,能给我个邮箱吗?我把所有的源代码发过去,运行一下,到底是不是只有
Vc++6.0运行会报错呢,这个交流太不方便了,我都不能把所有的源程序贴上,我的邮箱是nfntt@163.com
jkx01whg 2010-01-05
  • 打赏
  • 举报
回复
1、new要与 delete配对使用;
2、容器自己的内存自己会管理。
hityct1 2010-01-05
  • 打赏
  • 举报
回复
vs2005编译无错
cattycat 2010-01-05
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
不要用iostream.h
taodm 2010-01-05
  • 打赏
  • 举报
回复
呃,珍惜生命,远离VC6.
并且,扔了那些让你#include <iostream.h>的破书。
nfzhlk 2010-01-05
  • 打赏
  • 举报
回复
addresss.cpp
#include <iostream>
#include<string>
#include"address.h"
#include"AddressList.h"
#include"AddressBook.h"
int main( )
{
new AddressBook;
return 0;
}
ostream& operator<<(ostream& os,const RecordList& c_r1)
{
RecordList::const_iterator it;
RecordList::const_iterator it_end=c_r1.end( );
for(it=c_r1.begin( );it!=it_end;it++)
{
os<<(*it)-name<<'\n'<<(*it)->tel<<'\n';

}
return os;
}
istream& operator>> (istream& is,RecordList& r1)
{
Record* rec;
string name;
while(true)
{
getline(is,name);
if(name==" ")
break;
rec=new Record;
rec->name=name;
getline(is,rec->tel);
r1.push_back(rec);
}
return is;

}
addressList.h
#ifndef H_ADDRESSLIST_H_AAA
#define H_ADDRESSLIST_H_AAA
#include <iostream.h>
#include <string>
#include "address.h"
using namespace std;
class AddressList
{
protected:
RecordList recList;
public:
typedef RecordList::iterator Iterator;
virtual void addRecord(Record* rec);
virtual Iterator removeRecord(Iterator it);
virtual Iterator findRecord(string pattern,int type,Iterator from);
virtual void saveRecords(ostream& os);
virtual int loadRecords(istream& is);
virtual ~AddressList( );
const int size( ) const{return (int)recList.size( );}
const bool empty( ) const {return recList.empty( );}
virtual void clear( ) {recList.clear( );}
Iterator first( ){return recList.begin( );}
Iterator pastEnd( ){return recList.end( );}



};
#endif H_ADDRESS_H_AAA
下面是addressList.cpp
#include"AddressList.h"
AddressList::~AddressList( )
{
recList.clear( );
}
void AddressList::addRecord(Record* rec)
{
if(rec!=NULL)
{
recList.push_back(rec);
}
}
AddressList::Iterator AddressList::removeRecord(AddressList::Iterator it)
{
return recList.erase(it);
}
AddressList::Iterator AddressList::findRecord(
string pattern,int type,AddressList::Iterator from)
{
Iterator it;
Iterator it_end=recList.end( );
for(it=from;it!=it_end;it++)
{
if((type==1&&(*it)->name==pattern)||(type==2&&(*it)->tel==pattern))
break;
}
return it;
}
void AddressList ::saveRecords(ostream &os)
{
os<<recList;
}
int AddressList::loadRecords(istream &is)
{
int ori=size();
is>>recList;
return size( )-ori;
}
nfzhlk 2010-01-05
  • 打赏
  • 举报
回复

定义了一个结构Record,三个类AddrestList,AddrestBook,Recordlist,分别是下面是元代码
这是address.h的
#ifndef H_ADDRESS_H_ABCDE
#define H_ADDRESS_H_ABCDE


#include <fstream>
#include <list>
using namespace std;
struct Record
{
string name;
string tel;
};
class RecordList:public list<Record*>
{
friend ostream& operator <<(ostream& os,const RecordList& c_rl);
friend istream& operator>>(istream& is,RecordList& r1);
public:
void clear( )
{
iterator iter;
iterator it_end=end( );
for(iter=begin( );iter!=it_end;iter++)
{
delete *iter;
}
list<Record*>::clear( );
}
iterator erase(iterator where)
{
delete *where;
return list<Record*>::erase(where);
}
~RecordList( )
{
this->clear( );
}
};
#endif H_ADDRESS_H_ABCDE

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧