c – 错误C2678:二进制’<<':找不到运算符,它接受类型为'const std :: ofstream'的左手 *** 作数(或者没有可接受的转换)

c – 错误C2678:二进制’<<':找不到运算符,它接受类型为'const std :: ofstream'的左手 *** 作数(或者没有可接受的转换),第1张

概述我正在研究MFC应用程序,并在类头中声明了一个ofstream对象,然后在构造函数中初始化该对象,并在同一类的其他方法中使用.我收到以下错误: Error C2678: binary ‘<<‘ : no operator found which takes a left-hand operand of type ‘const std::ofstream’ (or there is no accep 我正在研究MFC应用程序,并在类头中声明了一个ofstream对象,然后在构造函数中初始化该对象,并在同一类的其他方法中使用.我收到以下错误:

Error C2678: binary ‘<<‘ : no operator found which takes a left-hand operand of type ‘const std::ofstream’ (or there is no acceptable conversion)

我搜索过这个问题,发现了许多解决方案,即有一些建议:

>使用#include< string>
>使用#include< iostream>
>使用#include< istream>

我得到的一些其他信息是关于何时发生此错误.但我所得到的并不能解决我的问题.请看看我的代码:

CGroupComboBox.h:

private:    std::ofstream fptr;

CGroupComboBox.cpp:

//ConstructorCGroupComboBox::CGroupComboBox()    : m_dropdownListautoWIDth(true),m_autocomplete(true),m_selectionUndobyEscKey(true){    fptr.open("test.txt",std::ios::out); //Initialization of fptr}//Member Functionint CGroupComboBox::FindString(int nStartAfter,LPCTSTR lpszString) const{    fptr<<"I am FindString.\n"; //Trying to write something    //Other Code}//DestructorCGroupComboBox::~CGroupComboBox(){    //Other Code    fptr.close();}

我在这做错了什么?

解决方法 您使用限定符const声明了此成员函数

int CGroupComboBox::FindString(int nStartAfter,LPCTSTR lpszString) const                                                                    ^^^^^

因此,在这种情况下,它具有类型const CGroupComboBox *,您可能不会更改此指向的对象的数据成员.

不过这句话

fptr<<"I am FindString.\n"; //Trying to write something

需要非const数据成员fptr.

所以编译器发出错误.

解决方案之一是对数据成员fptr使用说明符可变

总结

以上是内存溢出为你收集整理的c – 错误C2678:二进制’<<':找不到运算符,它接受类型为'const std :: ofstream'的左手 *** 作数(或者没有可接受的转换)全部内容,希望文章能够帮你解决c – 错误C2678:二进制’<<':找不到运算符,它接受类型为'const std :: ofstream'的左手 *** 作数(或者没有可接受的转换)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1216763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存