2010-09-19 77 views
2

類型轉換操作我有一個這樣的轉換:C++重載爲指針

Class1 *p1; 
Class2 *p2 = new Class2(); 
p1 = (Class1 *) p2; 

我可以覆蓋上面的類型轉換操作符返回一個自定義的Class1對象的指針? 如果是的話如何?

編輯:我確切的問題是,我有這樣的代碼:

if (*$1 == ArrayType(AnyType())) 
{ 
    $$ = ((ArrayType *) $1)->getElementsType(); 
} 

==操作符重載所以1 $可能是anytype類型的*。

回答

5

不,您不能重載非類類型的轉換運算符。

你想解決的實際問題是什麼?您可能需要考慮在實際類中提供轉換運算符。

+0

這是一個Bison/Flex項目。 yylval必須是一個指向類的指針,而不是它的一個實例。我已經定義了一個帶有子類ArrayType和AnyType的Type類(它應該與任何類型(子類)相等)。所以有時我有一個指向AnyType的指針,並且必須從它創建一個ArrayType指針。 – 2010-09-19 15:48:30