C++重载指针的类型转换运算符
我有这样的转换:
Class1 *p1;
Class2 *p2 = new Class2();
p1 = (Class1 *) p2;
Can I override the typecast Operator to return a custom Class1 object pointer? 如果是的话怎么办?
编辑:我的确切问题是我有这样的代码:
if (*$1 == ArrayType(AnyType()))
{
$$ = ((ArrayType *) $1)->getElementsType();
}
运算符 == 重载,因此 $1 可能是 AnyType * 类型。
I have a conversion like this:
Class1 *p1;
Class2 *p2 = new Class2();
p1 = (Class1 *) p2;
Can I override the typecast operator above to return a custom Class1 object pointer?
If yes how?
EDIT: My exact problem is that I have code like this:
if (*$1 == ArrayType(AnyType()))
{
$ = ((ArrayType *) $1)->getElementsType();
}
Operator == is overloaded so $1 may be of type AnyType *.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不可以,您不能重载非类类型的转换运算符。
您想要解决的实际问题是什么?您可能需要考虑在实际类中提供转换运算符。
No, you cannot overload conversion operators of non-class types.
What is the actual problem you want to solve? You might want to consider providing conversion operators in the actual classes.