C++ ifstream 的类型不完整
C++ ifstream has incomplete type
我正在修改要将输出写入文件的项目。在我的 .hpp
文件中,我声明了一个文件流,如下所示:
// fname.hpp file
#include <fstream>
std::ifstream m_ifs = ("path_to_file");
然后在我的 .cpp
文件上
// fname.cpp
if (!m_ifs.is_open()) {
std::cerr << "Not writing to file" << std::endl;
return;
}
m_ifs << "Write something"
但是当我编译时出现以下错误:
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;
错误指向我在 hpp
文件中的声明。
我在网上找到的解决方案都没有解决问题。
以下有效:
// fname.hpp file
#include <fstream>
const std::string m_file = ("path_to_file");
std::fstream m_fs;
和
// 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"
对我来说它看起来像一个全局变量。如果确实如此,请按以下方式声明它们:
//fname.hpp:
const std::string m_file = ("path_to_file");
std::fstream m_fs;
和
// 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"
此外,您不能写入 ifstream。将其更改为 ofstream 或 fstream。
看来您混淆了 ifstream 和 ofstream。正如评论中所述,std::ifstream 没有定义运算符 <<.
您要查找的输出文件是 std::ofstream。记住 o 是输出,i 是输入
我正在修改要将输出写入文件的项目。在我的 .hpp
文件中,我声明了一个文件流,如下所示:
// fname.hpp file
#include <fstream>
std::ifstream m_ifs = ("path_to_file");
然后在我的 .cpp
文件上
// fname.cpp
if (!m_ifs.is_open()) {
std::cerr << "Not writing to file" << std::endl;
return;
}
m_ifs << "Write something"
但是当我编译时出现以下错误:
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;
错误指向我在 hpp
文件中的声明。
我在网上找到的解决方案都没有解决问题。
以下有效:
// fname.hpp file
#include <fstream>
const std::string m_file = ("path_to_file");
std::fstream m_fs;
和
// 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"
对我来说它看起来像一个全局变量。如果确实如此,请按以下方式声明它们:
//fname.hpp:
const std::string m_file = ("path_to_file");
std::fstream m_fs;
和
// 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"
此外,您不能写入 ifstream。将其更改为 ofstream 或 fstream。
看来您混淆了 ifstream 和 ofstream。正如评论中所述,std::ifstream 没有定义运算符 <<.
您要查找的输出文件是 std::ofstream。记住 o 是输出,i 是输入