这里有一个类似的,也许是相同的问题: 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)
答案 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;
};