데이터를 표시하기 위해 csv 파일을 작성해야 하는 프로젝트가 있습니다. Github에는 minicsv라는 csv용 경량 읽기 및 쓰기 라이브러리가 있어서 다운로드했습니다. 그러나 예제를 컴파일할 때 다음과 같은 문제가 발생했습니다.
example.cpp:1:0:
minicsv.hpp에 포함된 파일에서: 함수에서
'csv::ofstream& 연산자<<(csv::ofstream&, const
T&)':
minicsv.hpp:326:38: 오류: 호출에 일치하는 함수가 없습니다.
'csv::ofstream::escape_and_output(std::basic_ostringstream
ostm.escape_and_output(os_temp.str());
^
minicsv.hpp:326:38:
참고: 후보는:
minicsv.hpp:266:8: 참고: 무효
csv::ofstream::escape_and_output(std::string&)
공허
escape_and_output(std::string & src)
...
오류가 많아서 더 이상 올리지 않고 용량을 차지하겠습니다. 이러한 오류는 모두 동일한 함수 헤더에서 발생합니다. 함수 헤더는 다음과 같이 정의됩니다:
void escape_and_output(std::string & src)
호출은 다음과 같습니다.
ostm.escape_and_output(os_temp.str())
분명히 호출할 때 함수 헤더가 필요합니다. rvalue 참조 와 실제 함수 헤더에 제공된 lvalue 참조가 일치하지 않으므로 컴파일러에서 오류를 보고합니다. 수정은 매우 간단합니다. "&"를 "&"로 변경하면 됩니다. 즉, 함수 헤더를 다음과 같이 변경하면 됩니다.
void escape_and_output(std::string &
src)
오류가 너무 뻔해서 처음에는 적고 싶지 않았지만, c++0x에 익숙하지 않은 분들이 헤맬까 봐 포스팅하게 되었습니다. 또한 프로젝트에 왜 그렇게 명백한 오류가 있는지 모르겠습니다. 아마도 상사의 컴파일러가 너무 똑똑할 수도 있습니다.
더 많은 관련 글은 PHP 중국어 홈페이지(m.sbmmt.com)를 주목해주세요!