2013-02-10 105 views
-6

爲什麼我會得到一個錯誤,當我嘗試靜態澆鑄一個元素*爲int廣東話靜態鑄造類整數

typedef Element* ElementPtr 

int Element::getVP (ElementPtr item) 
{ 
return static_cast <int>(item); // I have a class called Element 
} 
+1

那你爲什麼這麼想? – Rapptz 2013-02-10 10:52:55

+1

你對此有何看法?這沒有多大意義。 – 2013-02-10 10:53:00

+0

爲什麼我應該使用無效指針?我不明白 – Computernerd 2013-02-10 10:54:20

回答

2

不是真的知道什麼是你的問題,但我覺得你想要的隱式轉換功能。 要轉換Element爲int,你想operator int()

struct Element 
{ 
    operator int() 
    { 
    return i; 
    } 
    int i; 
}; 

int Element::getVP (Element* item) 
{ 
    return (*item); // I have a class called Element 
} 

但它仍然不清楚爲什麼你在Element類需要getVP

它只是向您展示如何將結構/類轉換爲int類型。如果不是你想要的,我會刪除我的答案。

1

假設你想從元素A int,你已經超負荷的,像這樣Element類轉換運算符:

operator int() { return m_some_int; } 

你可以使用(假設項目是一個指針)

return (int)(*item); 

相反,如果你試圖讓指針的地址,你可以做到以下幾點:

std::size_t Element::get_address(Element* item) 
{ 
    return reinterpret_cast<std::size_t>(item); 
}