gpt4 book ai didi

c++ - 使用 const_cast 创建方法的非常量变体

转载 作者:行者123 更新时间:2023-12-02 12:52:30 25 4
gpt4 key购买 nike

const_cast 可以用于创建已实现方法的非常量版本吗?我想我看到了一些类似的内容(建议使用 const 方法来完成实际工作),但我不太确定它应该如何工作。

Value& const search(key) const {
// find value with key
return value;
}

Value& search(key) {
return const_cast<Value&>(search(key));
}

如果不是这样,那么在没有代码重复的情况下创建非常量函数的推荐方法是什么?

最佳答案

最简单的方法是使用 C++17 中的 as_const:

Value& search(key) {
return const_cast<Value&>(std::as_const(*this).search(key));
}

没有它,你可以这样做(或者自己实现,这不是很难)

Value& search(key) {
return const_cast<Value&>(static_cast<const T&>(*this).search(key));
}

其中 T 是类的类型(您可以使用 decltype 获得通用解决方案,但由于 decltype(*this) 是引用类型)。

您可以查看 as_const 实现 here或通用 Actor here .

关于c++ - 使用 const_cast 创建方法的非常量变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47850664/

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