이 줄에서 오류가 발생하는 이유는 무엇 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
.