std::string operator == error! help!

muddogxp 2003-12-11 04:57:53
typedef std::vector<std::string> sTable;
sTable id_table;
.........
...........
sTable::iterator vi = id_table.begin();
bool intable = false;
int index = 0;

std::string tempstring = temp_string;

if(vi)
do{
if(*vi == tempstring){ // error!!
intable = true;
break;
}
index++;
}while(++vi);


error C2784: 'bool __cdecl std::operator ==(const class std::multimap<_K,_Ty,_
Pr,_A> &,const class std::multimap<_K,_Ty,_Pr,_A> &)' : could not deduce templ
ate argument for 'const class std::mu
ltimap<_K,_Ty,_Pr,_A> &' from 'class std::basic_string<char,struct std::char_t
raits<char>,class std::allocator<char> >'

可string 的opeartor == STL中重载过了啊,
怎么会类型不匹配啊??
ft

ps:VC6。0下编译!

...全文
7 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
heguobaoceo 2003-12-11

应该是你少定义了一个参数
在定义VECTOR模板时它声明了multimap类
你应该定义bool operator==(const class ID & x,const ID & y)声明*vi==tempstring

类型不匹配
去看C++库声明和你的VC++中INCLUDE中的<VECTOR.H>文件
回复
danielhf 2003-12-11
1, 迭代器不能用指针的判断方法 if ( vi ) => if ( vi!= id_table.end() )
2, tempstring 没有声明 //代码不全
回复
chelsea 2003-12-11
代码贴的不全吧?

此vi的类型还是vector<string>::iterator?
编译错误怎么是map的operator == ?
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告