I've got a bit of a problem with the `->() lfun.  To illustrate,
consider the following class:

---8<--
class Base
{
  mixed `->(string x)
  {
    return
      (x == "add_one" && lambda(int x) { return x+1; }) ||
      (x == "add_two" && lambda(int x) { return x+2; });
  }
}
---8<---

I now have a class which allows me to do Base()->add_one(7) to get 8,
and Base()->add_two(7) to get 9.  So far so good.

Now, let's try to specialize this class:

---8<---
class Sub
{
  inherit Base;
  string add_two(int x) { return x+"two"; }
}
---8<---

FAIL!  Sub()->add_two(7) still returns 9.  And what's more, even if I
try to add something with a name that doesn't exist in Base, I still
can't access it outside of Sub.

Is there a way around this?  I tried using `::->() as a fallback in
`->(), but it didn't have the desired effect.
  • Met... Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) developers forum
    • ... Henrik Grubbstr�m (Lysator) @ Pike (-) developers forum
      • ... Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) developers forum
        • ... Henrik Grubbstr�m (Lysator) @ Pike (-) developers forum
          • ... Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) developers forum

Reply via email to