Ove*_*Ove 3 c++ operator-overloading
我必须编写一个简单的日志类,将输出写入文件.
我希望它能够重载<<运算符,所以我可以这样做:
MyLog log("C:\\log.txt");
log<<"Message";
Run Code Online (Sandbox Code Playgroud)
但Visual C++告诉我:"错误C2039:'<<':不是'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);
};
Run Code Online (Sandbox Code Playgroud)
MyLog.cpp
#include "MyLog.h"
MyLog::MyLog(char* filename)
{
logfile.open(filename);
}
MyLog& MyLog::operator<<(MyLog& l,char*msg)
{
cout<<msg;
return l;
}
Run Code Online (Sandbox Code Playgroud)
有谁知道什么是错的?
CB *_*ley 19
你已经宣布免费功能MyLog& operator<<(MyLog& l,char* msg)成为friend了的MyLog类.它不是类本身的成员,所以你的函数定义应该从这开始:
MyLog& operator<<(MyLog& l,char* msg)
{
//...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3498 次 |
| 最近记录: |