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

Forcing the return value of a function to be stored in a const variable/to be treated as const

本文关键字:常量 变量 处理 函数 存储 返回值      更新时间:2023-10-16

这里提出了一个类似的问题:强制常量存储返回值

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

假设我有一个结构A和B,它们都包含一个shared_pointer。现在我有了类C。类C包含一个A的实例。C有一个const方法getB(),它返回一个类型为B的对象,该对象是在瞬间创建的,包含a的shared_pointer的副本。

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

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

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

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

class BProxy
{
public:
    BProxy(const B &b) : _b(b) {}
    void doSomeStuff() {...}    
private:
    B _b;
};