Question: I'm modifying an project where I want to write an output to a file. In my `.hpp` file I declared a file stream like so:

```
// fname.hpp file
#include <fstream>

std::ifstream m_ifs = ("path_to_file");

```

then on my `.cpp` file I am have

```
// fname.cpp
if (!m_ifs.is_open()) {
      std::cerr << "Not writing to file" << std::endl;
      return;
}
m_ifs << "Write something"

```

But when I compile I get the following error:

```
error: field ‘m_ifs’ has incomplete type ‘std::ifstream {aka std::basic_ifstream<char>}’

/usr/include/c++/5/iosfwd:116:11: note: declaration of ‘std::ifstream {aka class std::basic_ifstream<char>}’
     class basic_ifstream;

```

The error points to my declaration on the `hpp` file.

The solutions I found on the web didn't solve the problem.

---

The following worked:

```
// fname.hpp file
#include <fstream>

const std::string m_file = ("path_to_file");
std::fstream m_fs;

```

and 

```
// fname.cpp
m_fs.open(m_file.c_str());
if (!m_fs.is_open()) {
      std::cerr << "Not writing to file" << std::endl;
      return;
}
m_fs << "Write something"

```

Answer: 
It looks like you got ifstream and ofstream confused. As was stated in the comments, std::ifstream does not define the operator <<.

What you are looking for with an output file is std::ofstream. Remember the o is for output, i is for input
It looks like a global variable to me. If it indeed is, declare them the following way:

```
//fname.hpp:
const std::string m_file = ("path_to_file");
std::fstream m_fs;

```

and 

```
// fname.cpp
m_fs.open(m_file.c_str());
if (!m_fs.is_open()) {
      std::cerr << "Not writing to file" << std::endl;
      return;
}
m_fs << "Write something"

```

Also, you can't write to ifstream. Change it to ofstream or fstream.