我正在尝试使用Visual Studio 2010编译一些C ++代码,但是收到以下错误:
错误C2664:'molder :: Mold :: set_piece_maker':无法将参数1从'piece_maker :: Piece_Maker * const'转换为'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);
}
编译器可能会发生什么情况来引发错误?
答案 0 :(得分:7)
问题不在于const
,它是顶级const
,无论如何都会被忽略。看看垂直排列的两种类型:
piece_maker::Piece_Maker *const
piecemaker::Piece_Maker *