将 shared_ptr 作为参数传递给接受类类型对象的函数

Posted

技术标签:

【中文标题】将 shared_ptr 作为参数传递给接受类类型对象的函数【英文标题】:pass shared_ptr as a argument to a function which accepts object of a class type 【发布时间】:2014-11-11 11:24:30 【问题描述】:

我想知道,是否可以将 shared_ptr 作为参数传递给接受类类型指针的函数

例子

class class_A_type

 bla bl a

 private:
    IStuff *mStuff;


class IStuff

  public:
    IReporter();
    virtual ~IReporter();
    virtual void ReportResults( class_A_RESULT_TYPE *pResult) = 0;
;

void class_A_type::SendResultBack( bool status, std::string statusString )

        boost::shared_ptr< class_A_RESULT_TYPE >aResultBptr( new class_A_RESULT_TYPE ( mStuff, GetPropertyName() ) );
        bool lbool = false;
        std::string lstr = "running";
        aResultBptr->setStatus( lbool, lstr );
        myStuff->ReportResults( aResultBptr );// ERROR  HOw to pass shared _ptr ?? 

【问题讨论】:

【参考方案1】:

您应该在shared_ptr 上调用get 函数。

myStuff->ReportResults( aResultBptr.get() );

【讨论】:

以上是关于将 shared_ptr 作为参数传递给接受类类型对象的函数的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将类类型的对象作为参数传递给另一个类,这样我就不必再次初始化? (Python 3.x)

Excel VBA:将计算结果数组作为参数传递给函数

将枚举类型作为参数传递给 GraphQL 查询 - Quarkus

将对象类型作为参数传递给方法?

将实例变量作为参数传递给同一类中的方法?

将额外的参数传递给回调函数