2013-04-28 43 views

回答

5

編譯器是正確的:雖然std::unique_ptr<INuiSensor>可用於指向事物,但它不是NuiCreateSensorByIndex(int,INuiSensor**)函數期望的指針對象。該函數想要一個指針的指針的原因是,它希望通過這種分配修改指針的內容:

*ptrToPtr = somePtr; 

如果編譯器讓你通過一個指向std::unique_ptr<INuiSensor>,這個任務將是無效的。這就是爲什麼你需要創建一個臨時的「裸」指針,將它傳遞給函數,然後將結果分配回std::unique_ptr<INuiSensor>

0
T* get() const; 

get通過返回它的指針,你這樣做是採取臨時(技術上稱爲右值),這是不允許的地址等什麼。

爲了解決這個問題,你應該存儲值的變量中:

INuiSensor* ptr = uni.get(); 

hr = NuiCreateSensorByIndex(i, &ptr); 
+0

這是行不通的。 ptr將是unique_ptr中實際值的副本。 – SirPolly 2017-06-01 11:52:00

相關問題