Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指针的C++重载类型转换算子_C++_Pointers_Operator Overloading_Bison_Casting - Fatal编程技术网

指针的C++重载类型转换算子

指针的C++重载类型转换算子,c++,pointers,operator-overloading,bison,casting,C++,Pointers,Operator Overloading,Bison,Casting,我有这样的转换: Class1 *p1; Class2 *p2 = new Class2(); p1 = (Class1 *) p2; if (*$1 == ArrayType(AnyType())) { $$ = ((ArrayType *) $1)->getElementsType(); } 我可以重写上面的typecast操作符来返回自定义的Class1对象指针吗? 如果是,怎么做 编辑:我的问题是我有这样的代码: Class1 *p1; Class2 *p2 = new

我有这样的转换:

Class1 *p1;
Class2 *p2 = new Class2();
p1 = (Class1 *) p2;
if (*$1 == ArrayType(AnyType()))
{
    $$ = ((ArrayType *) $1)->getElementsType();
}
我可以重写上面的typecast操作符来返回自定义的Class1对象指针吗? 如果是,怎么做

编辑:我的问题是我有这样的代码:

Class1 *p1;
Class2 *p2 = new Class2();
p1 = (Class1 *) p2;
if (*$1 == ArrayType(AnyType()))
{
    $$ = ((ArrayType *) $1)->getElementsType();
}

运算符==被重载,因此$1可能是AnyType类型*

否,您不能重载非类类型的转换运算符


你想解决的实际问题是什么?您可能需要考虑在实际类中提供转换运算符。

这是BISO/Flex项目。yylval必须是指向类的指针,而不是类的实例。我定义了一个类型类,其子类ArrayType和AnyType应该等于任何类型子类。所以有时候我有一个指向任何类型的指针,必须从中创建一个ArrayType指针。