全球运营商" - >"重载C ++

时间:2017-11-06 14:08:57

标签: c++ operator-overloading

我想超载" - >"全局运算符指针。有可能吗?

A *var1 = new A(21);
int x = var1->someInt;

在该代码中,必须在到达" var1" s" someInt"变量

实际上我试图在到达其成员之前检查指针。另外,我试图在编写的代码上实现这个系统,所以我不想在实际代码中改变太多东西。

2 个答案:

答案 0 :(得分:3)

  

我想超载" - >"全球运营商。有可能吗?

不,这不可能。

也许你可以定义一个" root"您的库或程序中的类(将定义该运算符Helpers),并让您的所有类继承它。

BTW,我不确定您是否能够在所有情况下定义require('./helpers')函数(包括任何类类型的有效自动变量的地址),并且有效。

在许多情况下,您无法定义此类函数(例如-> - 在tagged union类型中使用;您不容易知道当前活动的哪个成员。任意演员; ......);

对于现有的代码和类,isPointerValid(通常无法重新定义)的内置含义已经用于使用它们编译代码。

答案 1 :(得分:2)

如第16.5.6节(强调我的)中的C ++ 17标准草案中所述:

  

运算符函数应该是非静态成员函数或   是一个非成员函数,其中至少有一个类型的参数   是一个类,对类的引用,枚举或对它的引用   枚举

因此,不能重载不带任何参数的运算符。