在此代码中,[RegularExpression("[0-9]*\\.?[0-9]+", ErrorMessage = "Must be number")]
[RequiredIfEmpty("Phone", ErrorMessage = "Required")]
public string MobilePhone { get; set; }
函数是第三方,我无法更改它。在getDatabase
内部,我使用了main
。因此,我必须通过引用将shared_ptr
传递给Database*
函数。我怎样才能做到这一点?
getDatabase
答案 0 :(得分:1)
shared_ptr::get
按值返回托管指针,因此您无法将返回值绑定到非const
引用。
解决此问题的方法是首先使用原始指针创建数据库,然后将所有权转移到shared_ptr
。您可以选择将该代码包装在您自己的getDatabase()
重载中,以保持您的呼叫站点清洁。
void getDatabase(Database*& pDb)
{
pDb = createNewDatabase();
}
std::shared_ptr<Database> getDatabase()
{
Database *db = nullptr;
getDatabase(db);
return std::shared_ptr<Database>{db};
}
int main()
{
std::shared_ptr<Database> pDb{getDatabase()};
}