强制将函数的返回值存储在const变量/中以作为const处理

时间:2013-08-06 12:39:24

标签: c++

这里有一个类似的,也许是相同的问题: force const storing 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类(恰好是IplImage和Opencv的cv :: Mat)

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

1 个答案:

答案 0 :(得分: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;
};