2

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

然而,大部分讨论都集中在“你为什么要这样做?”

假设我有结构 A 和 B,它们都包含一个 shared_pointer。现在我有 C 类。C 类包含 A 的实例。C 有一个 const 方法 getB(),它返回一个 B 类型的对象,该对象是在此刻创建的,并且包含 A 的 shared_pointer 的副本。但是,我想调用 getB() 的人无法修改 B 的内容,尤其是 shared_pointer 指向的内存区域。

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

获得我的目标以返回新创建的唯一方法是B const *什么?(在这方面,这是一个非常有用的答案

4

1 回答 1

2

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

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

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

    void doSomeStuff() {...}    

private:
    B _b;
};
于 2013-08-06T12:57:44.610 回答