불완전한 유형은 허용되지 않습니다 : stringstream 오류가 발생하는

이 줄에서 오류가 발생하는 이유는 무엇 Error: incomplete type is not allowed입니까?

stringstream ss;


답변

#include <sstream> 정규화 된 이름을 사용합니다. std::stringstream ss;


답변

일부 시스템 헤더 std::stringstream는 정의없이 포워드 선언을 제공합니다 . 이것은 그것을 ‘불완전한 유형’으로 만듭니다. 수정하려면 <sstream>헤더에 제공된 정의를 포함해야합니다 .

#include <sstream>

답변

incomplete type컴파일러 그것은 (예를 들면 순방향 선언 본 때문에 그것이 알고 식별자의 사용은 예를 들면, 유형 발생하면 에러가 class stringstream;),하지만 그것에 대한 전체 정의 보지있다 ( class stringstream { ... };).

이는 자신의 코드에서 사용하지 않았지만 포함 된 헤더 파일을 통해서만 존재하는 유형에 대해 발생할 수 있습니다. 유형을 사용하는 헤더 파일을 포함했지만 유형이 정의 된 헤더 파일은 포함하지 않은 경우입니다. 헤더가 필요한 모든 헤더를 포함하지 않는 것은 드문 일이지만 불가능하지는 않습니다.

stringstream클래스 와 같은 표준 라이브러리의 항목 에 대해서는 클래스 또는 개별 함수 (예 : Unix man페이지, MSDN 라이브러리 등)에 대한 언어 표준 또는 기타 참조 문서 #include를 사용하여 사용하는 데 필요한 사항 과 무엇을 파악해야합니다. 네임 스페이스에서 찾을 수 있습니다. 클래스 이름이 나타나는 페이지를 검색해야 할 수도 있습니다 (예 🙂 man -k stringstream.