gpt4 book ai didi

c++ - 返回指向自身的指针的类函数,同时是 const。 C++

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:28 26 4
gpt4 key购买 nike

这是我尝试过的:

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;
}

顺便说一句:您的代码只是复制指针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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com