Class 如何从具有相同名称ISTEST()的类方法调用内置函数ISTEST()?

Class 如何从具有相同名称ISTEST()的类方法调用内置函数ISTEST()?,class,oop,recursion,namespaces,mql4,Class,Oop,Recursion,Namespaces,Mql4,我有以下代码: class Check { public: static bool IsTesting() { #ifdef __MQL4__ return IsTesting(); // _______ @fixme: Here the infinite recursion occurs #else return (MQL5InfoInteger(MQL5_TESTER)); #endif } }; void OnStart() { Pr

我有以下代码:

class Check {
public:

    static bool IsTesting() {
#ifdef __MQL4__
        return IsTesting(); // _______ @fixme: Here the infinite recursion occurs
#else
        return (MQL5InfoInteger(MQL5_TESTER));
#endif
    }
};

void OnStart() {
  Print("Starting...");
  if (Check::IsTesting()) { // _______ a first call to a class-method
    Print("This is a test.");
  }
}
在其中,我创建了我想要调用的类方法,但是代码进入无限递归,因为类方法的名称与系统内置(全局)函数()相同,它不调用前者,而是递归调用后者(它自己)


如何澄清在不更改方法名称的情况下调用全局函数而不是本地类方法?

前缀
IsTesting()
带有
,它告诉编译器使用全局作用域。e、 g:

static bool IsTesting() {
#ifdef __MQL4__
    return ::IsTesting(); // @fixme: Here is the loop occuring.
#else
    return (MQL5InfoInteger(MQL5_TESTER));
#endif
}

虽然
::
-名称空间解析技巧勾勒出了一条道路,
整个问题主要是
根据当前可用的有效的语言语法规则适当地设计/重构代码

,,
所以
在编译时指令的支持下,可以保持代码库的干净和使用(甚至可以使用词法
#define
替换相应的情况),但为了保持示例的结构:

class Check {
public:

    static bool IsTesting() {
#ifdef       __MQL5__
       return( MQL5InfoInteger( MQL5_TESTER ) );
#else
       return( MQLInfoInteger(  MQL_TESTER  ) );//_____ one could hardly find
                                                // a better example of MetaQuotes Inc.
                                                // practices on artificially
                                                // injecting features not adopted MQL5
                                                // into a stable MQL4 market
#endif
    }
};

评论 有关稳定语言的详细信息(MQL4已经有大约十年了)
突然间
失去了所有的代码库支持
并且
经历了许多语法爬行
相当长的时间
一旦一个新的、尚未成熟的产品(由于代理端许可问题,
MQL5
的一个全新的语言概念没有人真正等待)被接受
再加上仅仅是一种营销欲望,猜猜发生了什么事,
一个大满贯炸弹大小的陨石坑出现在全球范围内,这就立即需要对整个代码库进行重大的重新/分解,包括重新设计DLL接口——人们可以查看我的其他帖子

这不是一个轻率的咆哮,这是一个血腥的代价,
MQL4
DevTeams不得不为重新运行相同的代码而付出代价,因为它已经运行了多年

出于怀疑——一个值得铭记的血淋淋的教训。