C认为’<<'不是班级的成员,但它是
发布时间:2020-12-16 10:50:11 所属栏目:百科 来源:网络整理
导读:我必须编写一个简单的日志类,将输出写入文件. 我希望它能够重载操作符,所以我可以这样做: MyLog log("C:log.txt");log"Message"; 但是Visual C告诉我:“错误C2039:’' :不是'MyLog'的成员 我不知道我做错了什么. 这是代码: MyLog.h #pragma once#incl
我必须编写一个简单的日志类,将输出写入文件.
我希望它能够重载<<操作符,所以我可以这样做: MyLog log("C:log.txt"); log<<"Message"; 但是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); }; MyLog.cpp #include "MyLog.h" MyLog::MyLog(char* filename) { logfile.open(filename); } MyLog& MyLog::operator<<(MyLog& l,char*msg) { cout<<msg; return l; } 有谁知道什么是错的? 解决方法
你已经宣布了自由功能MyLog&运算符<<(MyLog& l,char * msg)成为MyLog类的朋友.它不是类本身的成员,所以你的函数定义应该从这开始:
MyLog& operator<<(MyLog& l,char* msg) { //... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- C++程序设计POJ》《WEEK7 输入输出和模板》《二进
- c# – 在新选项卡中打开的Selenium驱动程序不能像
- ruby-on-rails – 测试和建立连接
- ruby-on-rails – Rails和paperclip,删除记录但不
- Java代理模式/静态代理/动态代理
- MainActivity 访问 fragment_main.xml 中的组件
- opengl – 如何在glShaderSource中将String作为G
- ruby-on-rails – ArgumentError:父目录是全局可
- Sqlite C# asp.net (保留以后使用)
- objective-c – 使用带有NSString的XCTAssertEqu
热点阅读