2013-01-20 60 views
0

我的程序遇到了一个奇怪的问题。因此,在头我有这样的事情:在我的Set1.cpp文件功能的1份没有运算符==匹配std :: string吗?

#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]; 
} 

我得到了这样的事情:

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

在这种情况下,我得到了一个错误消息说:“没有找到操作符找到类型为'ItemType'的左侧操作数”。但是,如果我将typedef中的std :: string更改为int或unsigned long,并将“foo”更改为某个随机数,则代码将完美工作。任何建议? thx

+6

你是不是'#include '? – billz

+0

我不喜欢'使用namespace std'和'std :: string'组合(你应该使用其中一个)。但是,那可能只是我,其他人可能会不同意。 –

回答

8

您错过了头文件<string>,这意味着您的程序中没有全局定义的全局operator ==。这可能是您的问题。

要解决这个问题,尝试添加该行:

#include <string> 

希望这有助于!

+0

啊。有它的人。谢谢 :) – user1988385

1

您需要包含字符串头文件以将相对类型和操作符带到范围。

#include <string> 

注: 这是不好的编码习惯在头文件一切从std名字空间拉。

//using namespace std; 
相关问题