반응형
C ++ : 변수 'std :: ifstream ifs'에 이니셜 라이저가 불완전한 유형
이것이 꽤 멍청한 경우 미안하지만 C ++에 익숙하지 않습니다. 파일을 쓰고 다음을 사용하여 이루어집니다 ifstream
.
vector<string> load_f(string file) {
vector<string> text;
ifstream ifs(file);
string buffer, str_line;
int brackets = 0;
str_line = "";
while ( getline(ifs, buffer) ) {
buffer = Trim( buffer );
size_t s = buffer.find_first_of("()");
if (s == string::npos) str_line += "" + buffer;
else {
while ( s != string::npos ) {
str_line += "" + buffer.substr(0, s + 1);
brackets += (buffer[s] == '(' ? 1 : -1);
if ( brackets == 0 ) {
text.push_back( str_line );
str_line = "";
}
buffer = buffer.substr(s + 1);
s = buffer.find_first_of("()");
}
}
}
return text;
}
그러나 다음과 같은 오류가 발생하여 해결 방법을 잘 모르겠습니다.
variable 'std::ifstream ifs' has initializer but incomplete type
답변은 매우 감사합니다. #include <fstream>
사람들이 헤더 많은를 포함하는 것을 잊지 기 때문에 오류가 발생했기 때문에 발생하는을 구석으로 입니다.
편집하다 :
실제로 포함 된 것을 fstream
잊어 잊지 만 함수를 다른 파일로 이동하여 잊어 버리는 것이 아닙니다.
이것은 답변이 된 것 #include <fstream>
입니다.
메시지 의미 :-
incomplete type
-클래스가 전체 클래스로 정의되지 않음. 컴파일러는 class ifstream;
클래스가 존재한다는 것을 알지 클래스가 차지하는 메모리 양을 알지 못하는 명령문을 보았습니다 .
정방향 선언은 컴파일러가 다음을 더 잘 사용할 수 있습니다.
void BindInput( ifstream & inputChannel );
클래스가 존재한다는 것을 이해하고 클래스를 만들거나 클래스 내의 데이터를 보거나 클래스의 메서드를 호출하지 코드를 통해 포인터와 참조를 보낼 수 있습니다.
는 has initializer
약간의 외부를 보이지만, 불완전한 객체가 생성되고 있음을 말하고있다.
반응형
'IT' 카테고리의 다른 글
어떤 HTML5는 CSS를 사용합니까? 그 이유는 무엇입니까? (0) | 2020.07.12 |
---|---|
Android-AsyncTask에 대한 시간 초과를 설정 하시겠습니까? (0) | 2020.07.12 |
7 번째 항목에서 SQL Server 2012 열 ID 증가가 6에서 1000 이상으로 증가 (0) | 2020.07.12 |
inject.preload.js가 개발자 환경에서 크롬으로 파일을로드하지. (0) | 2020.07.12 |
데이터베이스 스키마를 어떻게 사용합니까? (0) | 2020.07.12 |