2013-01-15 281 views
0

我有一個函數:如何將指針轉換爲引用?

bool IntersectBoxBox(IShape3D* a, IShape3D* b) 
    { 
     Box* boxA = (Box*)a; 
     Box* boxB = (Box)b; 

     return(boxA->Intersects(boxB)); 
    } 

並且當2 IShape3D的被確定爲一個boxbox類型,它被稱爲(有一個IShape3D->GetType()方法)。

不管怎樣,問題是相交需要Box& box,所以我不能通過它的指針。有沒有廉價的方法來轉換參數?

+0

供參考:您可能有興趣使用[訪問者模式來模擬雙派遣](http://en.wikipedia.org/wiki/Double_dispatch#Double_dispatch_in_C.2B.2B)作爲必須從接口到具體類型。 –

回答

10

只需取消引用您的指針(*boxB)。

3

一般情況下 - 只有當您有非nullptr時纔可能。這在涉及動態投射時確實非常相關,因爲它看起來(不要使用C風格轉換用於動態分配)。在消除nullptr的情況後,您的確可以簡單地取消引用指針*boxB