gpt4 book ai didi

当它不是时,C++ 将其视为 const

转载 作者:太空宇宙 更新时间:2023-11-04 15:17:49 26 4
gpt4 key购买 nike

<分区>

我正在尝试使用 Visual Studio 2010 编译一些 C++ 代码,但出现以下错误:

error C2664: 'molder::Mold::set_piece_maker' : cannot convert parameter 1 from 'piece_maker::Piece_Maker *const ' to 'piecemaker::Piece_Maker *'

该错误指的是管理两个类之间相互引用的两个镜像函数:

void Piece_Maker::set_mold(molder::Mold* value, void* origin) {
if (this->mold == value)
return;

this->mold = value;
this->mold->set_piece_maker(this, this); // This is the line with the error
}

和:

void Mold::set_piece_maker(piecemaker::Piece_Maker* value, void* origin) {
if (this->piece_maker == value)
return;

this->piece_maker = value;
this->piece_maker->set_mold(this, this);
}
  • 我没有在任何地方对这些类中的任何一个使用 const。
  • 错误只发生在 mold->set_piece_maker() 行,而镜像的 piece_maker->set_mold() 行编译得很好。
  • 编译器声称“this”是 const,但没有标记我对其 mold 属性的修改,也没有标记我传递的“this”作为 origin 参数。
  • 当我实际将 set_mold() 设置为常量时,编译器会在尝试修改该函数中的模具并尝试将“this”作为原点传递时引发错误。

编译器引发该错误可能会发生什么?

26 4 0
文章推荐: javascript - 查找 Internet Explorer 的 javascript "this"关键字替代品
文章推荐: javascript - 使用 Web Worker 进行异步 Canvas 绘制
文章推荐: css - 是否可以在
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com