gpt4 book ai didi

c++ - 强制将函数的返回值存储在 const 变量中/被视为 const

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

这里有人提出了一个类似的,也许是相同的问题: force const storing of returned by value value

但是,大部分讨论都集中在“你为什么要那样做?”

假设我有结构 A 和 B,它们都包含一个共享指针。现在我有了 C 类。C 类包含 A 的一个实例。C 有一个 const 方法 getB() ,它返回一个 B 类型的对象,创建时包含 A 的 shared_pointer 的拷贝。但是,我希望调用 getB() 的人不能修改 B 的内容,特别是 shared_pointer 指向的内存区域。

在我的用户案例中,我无法修改 A 类和 B 类(恰好是 Opencv 的 IplImage 和 cv::Mat)

获取目标的唯一方法是返回新创建的 B const * 吗? (在这方面,this is a very useful answer)

最佳答案

您可以使用代理 模式:http://www.oodesign.com/proxy-pattern.html

创建 B 的代理,它将控制对它的访问并从您的方法返回一个代理而不是 B 本身。

class BProxy
{
public:
BProxy(const B &b) : _b(b) {}

void doSomeStuff() {...}

private:
B _b;
};

关于c++ - 强制将函数的返回值存储在 const 变量中/被视为 const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18080430/

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