0

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

#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 文件中我的函数的 1 部分中,我得到了如下内容:

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

在这种情况下,我收到一条错误消息,上面写着“没有找到采用'ItemType'类型的左操作数的运算符”。但是,如果我将 typedef 中的 std::string 更改为 int 或 unsigned long,并将“foo”更改为某个随机数,则代码可以完美运行。有什么建议吗?谢谢

4

2 回答 2

8

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

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

#include <string>

希望这可以帮助!

于 2013-01-20T20:58:52.830 回答
1

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

#include <string>

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

//using namespace std;
于 2013-01-20T21:04:48.030 回答