1. 程式人生 > >C++11智能指針和引用

C++11智能指針和引用

() 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智能指針和引用