C++11智能指針和引用
阿新 • • 發佈:2018-10-15
() auto log 導入 學習課程 ket pcl server ptr 最近在學習課程的時候發現一個很困惑的問題,上代碼
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導入課件中的源碼這裏也不會報錯。這是什麽原因????????????
C++11智能指針和引用