没有operator ==匹配std :: string?

时间:2013-01-20 20:57:25

标签: c++ string visual-c++

我的程序遇到了一个奇怪的问题。所以在标题中我得到了这样的东西:

#ifndef SET1_INCLUDED
#define SET1_INCLUDED

#include <iostream>
using namespace std;

typedef std::string ItemType;
class Set1{
  public:
  ------some public constructor and method in here-------
  private:
  ItemType setMember[100];
}

在Set1.cpp文件中我的函数的一部分我有这样的东西:

if (setMember[i] == "foo") {exist = true;}

在这种情况下,我收到一条错误消息,上面写着&#34;没有找到哪个操作符带有类型&#39; ItemType&#39;的左手操作数。 &#34 ;.但是,如果我将typedef中的std :: string更改为int或unsigned long,并更改&#34; foo&#34;对于一些随机数,代码完美无缺。有什么建议吗? THX

2 个答案:

答案 0 :(得分:8)

您缺少标题文件<string>,这意味着您的程序中没有可见的所有全局operator ==定义。这可能是你的问题。

要解决此问题,请尝试在此行中添加:

#include <string>

希望这有帮助!

答案 1 :(得分:1)

您需要包含字符串头文件以将相对类型和运算符引入范围。

#include <string>

注意:     从头文件中的std命名空间中提取所有内容是不好的编码实践。

//using namespace std;