我想超载" - >"全局运算符指针。有可能吗?
A *var1 = new A(21);
int x = var1->someInt;
在该代码中,必须在到达" var1" s" someInt"变量
实际上我试图在到达其成员之前检查指针。另外,我试图在编写的代码上实现这个系统,所以我不想在实际代码中改变太多东西。
答案 0 :(得分:3)
我想超载" - >"全球运营商。有可能吗?
不,这不可能。
也许你可以定义一个" root"您的库或程序中的类(将定义该运算符Helpers
),并让您的所有类继承它。
BTW,我不确定您是否能够在所有情况下定义require('./helpers')
函数(包括任何类类型的有效自动变量的地址),并且有效。
在许多情况下,您无法定义此类函数(例如->
- 在tagged union类型中使用;您不容易知道当前活动的哪个成员。任意演员; ......);
对于现有的代码和类,isPointerValid
(通常无法重新定义)的内置含义已经用于使用它们编译代码。
答案 1 :(得分:2)
如第16.5.6节(强调我的)中的C ++ 17标准草案中所述:
运算符函数应该是非静态成员函数或 是一个非成员函数,其中至少有一个类型的参数 是一个类,对类的引用,枚举或对它的引用 枚举。
因此,不能重载不带任何参数的运算符。