簡體   English   中英

C++:變量“std::ifstream ifs”有初始值設定項但類型不完整

[英]C++: variable 'std::ifstream ifs' has initializer but incomplete type

對不起,如果這很菜鳥,但我對 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;語句class ifstream; 這允許它理解一個類存在,但不知道該類占用了多少內存。

前向聲明允許編譯器更有意義:-

void BindInput( ifstream & inputChannel ); 

它了解類的存在,並且可以通過代碼發送指針和引用,而無需創建類、查看類中的任何數據或調用類的任何方法。

has initializer似乎有點無關緊要,但表示正在創建不完整的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM