首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果不是的话,C++会把它当作一个const

如果不是的话,C++会把它当作一个const
EN

Stack Overflow用户
提问于 2015-01-05 01:03:02
回答 1查看 95关注 0票数 0

我试图用Visual 2010编译一些C++代码,但得到了以下错误:

错误C2664:'molder::Mold::set_piece_maker‘:无法将参数1从“piece_maker::Piece_Maker *const”转换为“piecemaker::Piece_Maker*”

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

代码语言:javascript
复制
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
}

以及:

代码语言:javascript
复制
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。
  • 错误只发生在结晶器->set_ with _maker()行中,而镜像的件_maker->set_mold()行编译得很好。
  • 编译器声称"this“是const,但没有标记我对它的模型属性的修改,也没有将我的传递"this”标记为原始参数。
  • 当我实际生成set_mold() const时,编译器在试图修改该函数中的模型并试图将"this“作为原产地传递时会引发错误。

编译器会发生什么来引发这个错误呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-05 01:05:30

问题不是const,它是一个顶级的const,无论如何都被忽略了。请看两种垂直排列的类型:

代码语言:javascript
复制
piece_maker::Piece_Maker *const
piecemaker::Piece_Maker *
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27772129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档