这里提出了类似的,也许是相同的问题: force const storing of returned by value value
但是,大部分讨论都集中在“你为什么要这样做?”
假设我有结构 A 和 B,它们都包含共享指针。 现在我有了 C 类。C 类包含 A 的一个实例。 C 有一个 const 方法 getB(),它返回一个 B 类型的对象,该对象是在此时创建的,并且包含 A 的共享指针的拷贝。但是,我希望调用 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/