类函数,该函数在常量时返回指向自身的指针.c++

Class function that returns a pointer to itself while being const. c++

本文关键字:c++ 指针 返回 函数 常量 类函数      更新时间:2023-10-16

以下是我尝试过的:

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*。您可以使用一个非常数成员函数

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

或者将ptr的类型改变为const Reversi*

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

BTW:您的代码只是复制指针this,根本不复制内容。这意味着返回的指针将只指向同一个对象。你可能想要,

game* Reversi::clone() const {
    Reversi* ptr = new Reversi(*this); // use copy ctor here
    return ptr;
}

请注意,当您从this复制时,成员函数可能是const。这似乎更合理,因为克隆方法通常不应该更改原始对象的状态。