Error: 'this' is only defined in non-static member functions, not parse

Matej Nanut matejnanut at gmail.com
Mon Jan 16 15:49:26 PST 2012


Hey everyone,

I, once again, have a problem with an error I can't seem to figure out!

The situation:
- a class, inherited by five other classes;
- the class having a static function which returns one
  if its subclasses depending on the input of a string.

Something like this:

class Node
{
  static Node parse(ref string s)
  {
    /* Get value to switch by, an enum. */
    auto switchable = /* ... */;
    final switch (switchable)
    {
      case Blah.one: return new OneNode(s);
      case Blah.two: return new TwoNode(s);
    /* ... */
    }
  }
}

And I get the mentioned error. I don't understand it:
is it saying I'm using `this' in a static member function
called `parse'? Am I insane; where am I referencing it?

The other classes are in this form:

class OneNode : Node
{
  /* ... stuff ... */
  this(ref string s)
  {
    /* Does stuff with `s'. */
  }
}

Do you need more information?

Thank you,
Matej


More information about the Digitalmars-d-learn mailing list