C++11智能指針和引用

最近在學習課程的時候發現一個很困惑的問題,上代碼

class DataHeader;

class LoginResult:public DataHeader;

typedef std::shared_ptr<DataHeader> DataHeaerPtr;
//原型 
void addSendTask(ClientSocketPtr& pClient, DataHeaderPtr& header)
//未報錯調用
DataHeaderPtr ret = std::make_shared<LoginResult>();
pCellServer->addSendTask(pClient, ret);
//報錯調用
auto ret = std::make_shared<LoginResult>();
pCellServer->addSendTask(pClient, (DataHeaderPtr)ret);

#錯誤代碼:(DataHeaderPtr)ret

錯誤類型:
非常量引用的初始值必須爲左值。
測試環境爲vc2017。
疑問:
學習的電子課件中爲vc2013,這裏並不會報錯。在vc2017導入課件中的源碼這裏也不會報錯。這是什麼原因????????????

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章