2010-09-19 91 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