当前位置: 首页 > 知识库问答 >
问题:

错误C2678:二进制“

洪飞驰
2023-03-14

我正在开发一个MFC应用程序,并在类头中声明了一个流对象,然后在构造函数中初始化该对象,并在同一类的其他方法中使用。我遇到以下错误:

错误C2678:二进制'

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

  • 使用包含

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

CGroupComboBox。h:

private:
    std::ofstream fptr;

CGroupComboBox。cpp:

//Constructor
CGroupComboBox::CGroupComboBox()
    : m_dropdownListAutoWidth(true)
    , m_autocomplete(true)
    , m_selectionUndoByEscKey(true)
{
    fptr.open("test.txt",std::ios::out); //Initialization of fptr
}

//Member Function
int CGroupComboBox::FindString(int nStartAfter, LPCTSTR lpszString) const
{
    fptr<<"I am FindString.\n"; //Trying to write something

    //Other Code
}

//Destructor
CGroupComboBox::~CGroupComboBox()
{
    //Other Code

    fptr.close();
}

我做错了什么?

共有3个答案

阴元青
2023-03-14

错误C2678:二进制'

这就是答案<代码>

要解决此问题,请从FindString方法中删除const

秦珂
2023-03-14

由于fptr可以从const限定函数修改,因此应将其标记为可变函数。或者,您可以在查找字符串中使用常量强制转换。

娄建义
2023-03-14

您使用限定符const声明了此成员函数

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

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

然而,本声明

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

需要非常量数据成员fptr。

因此编译器发出错误。

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

 类似资料:
  • 我正在尝试编译以下代码: VS2012 C编译器返回以下编译错误: ... VC\包含\实用程序(219):错误C2678:二进制 '==': 找不到运算符,该运算符采用“const Point”类型的左侧操作数(或者没有可接受的转换) GCC C编译器返回以下编译错误: /usr/include/c /4.8/bits/stl_pair.h: 在'bool std::运算符==(constd::

  • 我很沮丧,我可能无法很好地解释,但基本上我试图编码一个音乐应用程序播放器,但每当我点击按钮,应用程序只是崩溃。Logcat真的帮不了什么忙,因为我不知道它出了什么问题。请帮帮我 主要活动。Java语言 } activity_main.xml: 登录。java:“ }" activity_login.xml:" 错误:

  • 我正在使用maven项目运行selenium测试,但是当我运行测试文件时,我收到了错误:无法连接到二进制FirefoxBinary(C:\Program Files(x86)\Mozilla Firefox\Firefox)。在端口7055上。它打开FF an的空白页,然后测试结果抛出错误: 这些是我的文件: 我有FireFox 51.0和selenium-java 2.45.0(jar)。

  • 我有一个用编写的基于的测试套件。当我从执行它时,它工作得很好。当我在中构建它时,会收到以下错误消息。 组织。openqa。硒。WebDriverException:未知错误:找不到Chrome二进制文件(驱动程序信息:chromedriver=2.31.488763(092de99f48a300323ecf8c2a4e2e7cab51de5ba8),平台=Windows NT 6.3。9600 x

  • 问题内容: 我在运行问答游戏时出错。这样的事情(打开游戏活动时)。我的应用程序停止,并在第0行上显示了二进制XML文件错误。有点奇怪,因为我没有在第0行看到这样的问题,所以我需要大家的帮助。谢谢! 其中MainGameActivity.java:36是: activity_game_main.xml: 问题出在哪里? 问题答案: 问题出在库本身,如果您检查: 如您所见,唯一接受颜色值, 不 接受颜

  • 二进制运算符"*"的操作数类型错误 我在编译过程中得到的错误是二进制运算符的坏操作数类型,表示:第一种类型:int第二种类型:int[],我只能使用这个逻辑。以下是我节目的一部分