我需要一些帮助。我知道你可以有这样的功能

void foo (std::ofstream& dumFile) {}


但是我有一个我想做同样事情的类,编译器给了我很多错误。

我的main.cpp文件看起来像这样:

#include <iostream>
#include <fstream>
#include "Robot.h"
using namespace std;

ofstream fout("output.txt");

int main() {
    Robot smth;
    smth.Display(fout);
    return 0;
}


我的Robot.h看起来像这样:

#include <fstream>
class Robot{
private:
     int smth;
public:
     void Display(ofstream& fout) {
         fout << "GET ";
     }
};


现在,如果我尝试对此进行编译,则会出现以下错误:

error: ‘ofstream’ has not been declared
 error: invalid operands of types ‘int’ and ‘const char [5]’ to binary ‘operator<<’


任何帮助都非常感谢。

最佳答案

您确实必须尊重名称空间:)

class Robot{
private:
     int smth;
public:
     void Display(std::ofstream& fout) {
         fout << "GET ";
     }
};


您的主文件具有using namespace std;,而您的Robot.h文件则没有。 (这很好,因为在头文件中包含“使用命名空间”构造是非常危险的想法)

关于c++ - ofstream作为C++中的方法参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49530709/

10-11 14:38