我不明白为什么以下代码在编译时失败并出现“返回对临时的引用”。对我来说单身不能是临时的,因为它是静态的!?
谢谢
#include <memory>
class Parent {
public:
static const std::shared_ptr<Parent>& get_default_value();
static const std::shared_ptr<Parent>& get_some_other_value();
};
class Child: public Parent {
public:
Child(){}
static const std::shared_ptr<Child>& singleton;
};
const std::shared_ptr<Child>& singleton = std::make_shared<Child>();
const std::shared_ptr<Parent>& Parent::get_default_value() {
return singleton;
}
const std::shared_ptr<Parent>& Parent::get_some_other_value() {
//FILL ME
}
编辑:父母的默认值是孩子的单例。(之前还有一些其他名称,但这很令人困惑)。
编辑2:我还想引用shared_pointers,因为默认情况很多而且无论如何都是单例,所以最好节省空间
编辑 3:我想要一个 std::shared_ptr& 作为类型结果,因为我希望接口对于默认值和其他值保持一致
编辑 4:由于不相关的原因,其他值需要 shared_ptr<>。