如何从 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
这是我的函数定义
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