这是我尝试过的:
game* Reversi::clone() const{
Reversi* ptr = this;
return ptr;
}
但是我收到以下错误:
error: invalid conversion from ‘const Reversi*’ to ‘Reversi*’ [-fpermissive]
Reversi* ptr = this;
提前致谢。
的类型的this
是const Reversi*
内部const的成员函数。您可以使用非const成员函数,
game* Reversi::clone() {
Reversi* ptr = this;
return ptr;
}
或将的类型更改ptr
为const Reversi*
,
const game* Reversi::clone() const {
const Reversi* ptr = this;
return ptr;
}
顺便说一句:您的代码只是复制了指针this
,根本没有复制内容。这意味着返回的指针将仅指向同一对象。你可能想要,
game* Reversi::clone() const {
Reversi* ptr = new Reversi(*this); // use copy ctor here
return ptr;
}
请注意,从this
成员函数进行复制时可能是const
。这似乎更合理,因为克隆方法通常不应更改原始对象的状态。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句