如何从 shared_ptr<T&> 的引用中提取数据

how to extract data from refernce of shared_ptr<T&>

这是我的函数定义

void subscribe(std::shared_ptr<StrategyOrderEvents &> &strategy)
{
     auto p=make_pair(strategy.get()->m_StrategyName,strategy);
}

但是当我尝试执行 strategy.get() 时,出现以下错误:

‘class std::shared_ptr’ has no member named ‘get’

StrategyOrderEvents class 中,我有一个数据成员名称,我不会提取它

*编辑通知 get()->get() 是一个尝试,我将其修复为 strategy.get()->m_StrategyName

不允许形成指向引用的共享(或其他)指针。

要么

void subscribe(std::shared_ptr<StrategyOrderEvents>& strategy)

或做

void subscribe(StrategyOrderEvents& strategy)

(最好添加 const 正确性)。

您当前正在接受对指向对象引用的共享指针的引用。从代码设计的角度来看,这已经是太多的引用(但编译器只会抱怨,因为形成指向引用的指针是非法的)。

该错误消息没有帮助,但您的 C++ 实现可能以某种方式实现 std::shared_ptr 模板,在使用引用类型实例化时将其保留为空 class,有点像

template<class T>
class shared_ptr {
    // real implementation
};

template<T>
class shared_ptr<T&> {}; // empty class for invalid usage