gpt4 book ai didi

C++无法以递归方式删除对象的常量

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:25:24 24 4
gpt4 key购买 nike

我有以下功能

class p{
public :
string const& PrintData() const
{
cout << "const" << str;
const_cast<ConstFunctions *>(this);
PrintData();
return str;
}
string const& PrintData()
{
cout << "non-const" << endl;
return str;
}
private :
string str="Hello";
}

int main()
{
const p p1;
p1.PrintData();
}

我期待以下内容::

常量你好非常量Hello

因为我去掉了对象的常量

但我正在进入无限递归循环

最佳答案

声明const_cast<ConstFunctions *>(this);没有做任何有用的事情。它做了一个 const_cast并简单地丢弃结果。编译器很可能会将其优化掉。

然后你进行递归调用,它只会调用它自己,而不是非常量函数。

你可能是想做

const_cast<p*>(this)->PrintData();

关于C++无法以递归方式删除对象的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36913500/

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