我有一个公共(public)成员的类 Cl
static std::ofstream &_rout;
在主文件中
ofstream out("output.txt");
ofstream& Cl::_rout(out);
但是我有一个编译错误:非法定义或重定义。 我该如何纠正它?
最佳答案
试试这个。
Logger.h
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
class Logger{
public:
static void open( const string & logFile);
static void close();
// write message
static void write( const string & message);
private:
Logger();
ofstream fileStream;
//Logger instance (singleton)
static Logger instance;
};
Logger.cpp
#include "Logger.h"
Logger Logger::instance;
Logger::Logger(){}
void Logger::open( const string& logFile){
instance.fileStream.open(logFile.c_str());
}
void Logger::close(){
instance.fileStream.close();
}
void Logger::write(const string& message){
ostream& stream = instance.fileStream ;
stream << message<< endl;
}
main.cpp
#include "Salida/Logger.h"
int main(){
Logger::open(path);
Logger::write("text");
Logger::close();
return 0;
关于c++ - 如何初始化对 std::ofstream 的静态引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10194253/