Interface question
BCS
BCS at pathlink.com
Tue Aug 29 08:46:04 PDT 2006
Charles D Hixson wrote:
> How should I write some code that would have an effect similar to what:
> interface P
> { this(ulong ndx);
> ulong fset();
> }
>
> would have if it were a legal construct?
>
> The "constructor" needs to return an instance of the class that
> implements it.
It strikes me as odd that you would want to do this. (I would have to
see the usage though before I would say you shouldn't.) As I understand
it the intention of Interfaces is that the underlying implementation is
/totally/ hidden. If there is some action that the class needs to do at
instancing time, then that should be apparent to the person coding the
class and done by them.
OTOH, if the "this" function is doing something like registering the
class with some sort of global catalog, you might have need for
something like that. However I would make the registration action
associated with the catalog and not the Objects
/******
Objects implementing P must register with the Catalog
******/
interface P
{ this(ulong);
ulong fset();
}
class Catalog
{
void Add(P);
void Remove(P);
}
Catalog cat;
class PO : P
{
ulong fset(){...}
this(ulong f)
{
...
cat.Add(cast(P)this);
}
~this()
{
cat.Remove(cast(P)this);
}
// OR
/****************
ALWAYS registrar this class with the Catalog
****************/
}
More information about the Digitalmars-d-learn
mailing list