2013-01-20 3 views
0

내 프로그램에 이상한 문제가 있습니다. 헤더에 나는 이런 식으로 뭔가 있어요 그래서 다음 Set1.cpp 파일 내 기능의 한 부분에연산자가 == 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

'using namespace std'와'std :: string'의 조합이 마음에 들지 않습니다 (둘 중 하나를 사용해야합니다). 그러나 그때는 저와 제 다른 사람들이 의견이 다를 수 있습니다. –

답변

8

<string> 헤더 파일이 누락되었습니다. 즉, 프로그램에 전체 operator == 정의가 표시되지 않습니다. 이는 문제의 경우 일 수 있습니다.

는이 문제를 해결하려면이 줄을 추가하십시오 :

#include <string> 

희망이 도움이!

+0

아. 알았어. 고마워 :) – user1988385

1

상대 유형과 연산자를 범위로 가져 오려면 문자열 헤더 파일을 포함해야합니다.

#include <string> 

참고 : 그것은 헤더 파일의 표준 네임 스페이스의 모든 일에 끌어 나쁜 코딩 습관이다.

//using namespace std; 
관련 문제