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

C++ treating this as a const when it isn't

我正在尝试使用 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,它是顶级 const,无论如何都会被忽略。看看垂直排列的两种类型:

piece_maker::Piece_Maker *const
piecemaker::Piece_Maker *