这是我尝试过的:

game* Reversi::clone() const{
    Reversi* ptr = this;
    return ptr;
}

但是我收到以下错误:
error: invalid conversion from ‘const Reversi*’ to ‘Reversi*’ [-fpermissive]
Reversi* ptr = this;

提前致谢。

最佳答案

this的类型是const成员函数内的const Reversi*。您可以使用非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。这似乎更合理,因为克隆方法通常不应更改原始对象的状态。

关于c++ - 在为const时返回指向自身的指针的类函数。 C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34119656/

10-08 21:34