Передача ifstream функции в C ++ - PullRequest
3 голосов
/ 23 февраля 2010

Я пытаюсь построить 16 различных деревьев суффиксов для проекта секвенирования генов. Они строятся в основном как таковые

int main()
{  
  ifstream fp;  
  fp.open("filepath", ifstream::in);  
  Tree I(fp);  
  fp.close();

Я пытаюсь использовать их в своем конструкторе с этим кодом:

Tree::Tree(ifstream &fp)   
{  
  string current = "";  
  char* line;  
  fp.getLine(line, 100); //ignore first line  
  for(int i=0; i<100; i++)     
    {  
      char temp = (char)fp.get();  
      if(temp=='\n')i--;  
      else current+=temp;  
    }  
  insert(current);  
  while(fp.good())  
    {  
      current = current.substr(1,99);  
      char temp = (char)fp.get();  
      if(temp=='\n')temp=(char)fp.get();  
      if(temp==EOF) break;  
      current+=temp;  
      insert(current);  
    }  
}  

Когда я пытаюсь скомпилировать, я получаю эти ошибки для каждого экземпляра, в котором я использую fp:

suffix.cpp: в конструкторе Tree::Tree(std::ifstream&):
суффикс.cpp: 12: ошибка: недопустимое использование неопределенного типа struct std::basic_ifstream<char, std::char_traits<char> >
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/iosfwd:89: ошибка: объявление struct std::basic_ifstream<char, std::char_traits<char> >
суффикс.cpp: 15: ошибка: недопустимое использование неопределенного типа struct std::basic_ifstream<char, std::char_traits<char> >
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/iosfwd:89: ошибка: объявление struct std::basic_ifstream<char, std::char_traits<char> >

Ответы [ 2 ]

6 голосов
/ 23 февраля 2010

Вы # включили заголовок fstream?

5 голосов
/ 23 февраля 2010

Похоже, что вы включили вместо в свои исходные файлы.

...