我必须编写一个简单的日志类,它将输出写入一个文件。
我希望它与重载 << 运算符一起工作,所以我可以这样做:
MyLog log("C:\\log.txt");
log<<"Message";
但是 Visual C++ 告诉我:“error C2039: '<<' : is not a member of 'MyLog'”
我不知道我做错了什么。
代码如下:
MyLog.h
#pragma once
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
class MyLog
{
private:
ofstream logfile;
public:
MyLog(char* filename);
friend MyLog& operator<<(MyLog& l,char*msg);
};
我的日志.cpp
#include "MyLog.h"
MyLog::MyLog(char* filename)
{
logfile.open(filename);
}
MyLog& MyLog::operator<<(MyLog& l,char*msg)
{
cout<<msg;
return l;
}
谁知道哪里出了问题?
最佳答案
您已经声明了自由函数 MyLog& operator<<(MyLog& l,char* msg)
成为friend
的 MyLog
类(class)。它不是类本身的成员,因此您对函数的定义应以此开头:
MyLog& operator<<(MyLog& l,char* msg)
{
//...
关于C++ 认为 '<<' 不是类的成员,但它是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1475992/