[원] error C2679: binary'<

1646 단어 String
오늘 매우 조사하기 어려운 버그를 만났는데 구글 도모가 물어봤지만 여전히 이해가 되지 않았다. 마지막으로 자신이 다시 시도한 후에 해결 방안을 찾았다.
먼저 오류 메시지를 보십시오.
1>.\lenz.cpp(2197)  error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
1>        D:\Program Files\VC\include\ostream(650): could be 'std::basic_ostream<_Elem,_Traits> &std::operator <<<wchar_t,std::char_traits<wchar_t>>(std::basic_ostream<_Elem,_Traits> &,const char *)'
1>        with
1>        [
1>            _Elem=wchar_t,
1>            _Traits=std::char_traits<wchar_t>
1>        ]
1>        D:\Program Files\VC\include\ostream(697): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<wchar_t,std::char_traits<wchar_t>>(std::basic_ostream<_Elem,_Traits> &,char)'
1>        with
1>        [
1>            _Elem=wchar_t,
1>            _Traits=std::char_traits<wchar_t>
1>        ]
......// With[].... ,

인터넷에서 찾아보니 #include이 없어서 그렇다는 의견이 많았지만 반복해서 확인해 보니 제가 해냈어요.아무리 생각해도 이해할 수 없다. 한때 서로 다른 파일의 헤더 파일이 중복 인용되어 실효를 초래했다고 생각했지만, 이것은 말이 안 된다!뒤에 진정된 후에 오류 정보를 두 번 클릭하여 원본 코드를 보면 기본적으로 이 오류는 두 가지 특징을 포함하고 있음을 알 수 있다.
1. 모두 LOG4CPLUS_디버그 등 디버그 함수
2. 매개 변수는 모두string 형식이 있다
그리고 나는 단독으로 프로그램을 써서 검증했다. 녀석, 정말 이렇다.원래 LOG4CPLUS_DEBUG 함수는 string 객체를 직접 인쇄할 수 없으며 변환 형식만 지원합니다.c_str().
해결 방법: 모든 LOG4CPLUS_DEBUG 함수의 string c_ 추가str()
 

좋은 웹페이지 즐겨찾기