3
大家好我目前使用QuickFast庫,我使用boost智能指針看到這個聲明:如何使用智能指針實例化一個對象
namespace QuickFAST{
namespace Messages{
class FieldIdentity;
typedef boost::intrusive_ptr<const FieldIdentity> FieldIdentityCPtr;
typedef boost::intrusive_ptr<FieldIdentity> FieldIdentityPtr;
void QuickFAST_Export intrusive_ptr_add_ref(const FieldIdentity * ptr);
void QuickFAST_Export intrusive_ptr_release(const FieldIdentity * ptr);
void QuickFAST_Export intrusive_ptr_add_ref(FieldIdentity * ptr);
void QuickFAST_Export intrusive_ptr_release(FieldIdentity * ptr);
}
}
,我得到了另一個類,我需要實例, 這是類:
namespace QuickFAST{
namespace Messages{
/// @brief the representation of a field within a message.
class QuickFAST_Export MessageField
{
public:
/// @brief Construct from an identity and a typed value.
MessageField(const FieldIdentityCPtr & identity, const FieldCPtr & field)
: identity_(identity)
, field_(field)
{
}
private:
FieldIdentityCPtr identity_;
FieldCPtr field_;
};
}
}
所以我的問題是:當我需要創建一個MessageField,我需要先準備我的FieldIdentityCPtr(RESP FieldCPtr),但它是一個推動智能指針,所以糾正我,如果我錯了,但我想也許我可以這樣做:
FieldIdentityCPtr identityFF_= new FieldIdentity(nameFld,,idFld);
FieldCPtr fieldFF_ = new Field(typeFld,false);
MessageField(*identityFF_,*fieldFF_);
難道不會傳遞'FieldIdentity&'和'Field&'嗎? – 2012-04-24 11:05:46
@MatthieuM。看着文檔,我認爲你是對的。但我仍然認爲這種做法是不正確的。如果構造函數使用兩個智能指針作爲參數,那麼爲什麼不只提供構造函數和引用它們呢? – 2012-04-24 11:12:03
哦,絕對是我在表格上挑逗,絕對不是內容。 – 2012-04-24 11:12:56