【发布时间】:2011-08-30 11:47:14
【问题描述】:
FUNCTION "=" (lString1, lString2 : IN lString) RETURN boolean IS
IF lString1 = NULL AND lString2 = NULL THEN
RETURN true;
ELSIF lString1 = NULL OR lString2 = NULL THEN
RETURN false;
END IF;
我正在尝试重载 Ada 中的相等运算符。每次我在函数中使用运算符“=”时,它都会导致递归,从而导致堆栈溢出,而不是使用我需要的 ada 定义的运算符。有没有办法将它与我的重载运算符区分开来?
【问题讨论】:
-
这个问题有帮助吗? stackoverflow.com/questions/443009/…
-
嗯,我以为你可以使用 Standard。"="(lString1, NULL),但 GNAT 对此犹豫不决,告诉我我有“不兼容的参数”。即使我将 null 替换为 lString 类型的常量(设置为 Null),我仍然遇到相同的错误。好奇...
-
@Will:不幸的是,我没有很好地阅读那段代码,因为 Ada 是我的第一门编程语言。
-
@Marc:我想有一种方法可以通过指定包来调用标准运算符,但我还没有想通。
-
您不应为访问类型重载“=”。
标签: overloading ada