static member and/or @property ?
chmike via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu May 19 08:04:00 PDT 2016
Sorry for the confusing subject, I couldn't find a concise
formulation of my question.
I have a set of classes derived from the same interface so that I
can use polymorphism.
I would like to store the name of the class as a string so that
it can be retrieved as a static member of the class or by using
polymorphism.
Here is the problem expressed as an exercise where you are
invited to replace the ??? with the appropriate text, if it is
possible. My blind and naive attempts failed.
interface AThing { ??? string name ??? }
class OneThing : AThing { ??? string name ??? "OneThing" ??? }
class OtherThing : AThing { ??? string name ??? "OtherThing" ??? }
void main()
{
// Accessing name as static information
writeln(OneThing.name ??? );
// Accessing name through polymorphism
AThing tbl;
tbl ~= new OneThing;
tbl ~= new OtherThing;
tbl ~= new OneThing;
foreach(a; tbl) writeln(a.name???);
}
The only viable solution I found so far is by using distinct
member names. In the interface we define name as a property, and
in the class we define the static member with another name. Is it
possible to avoid the different names ?
More information about the Digitalmars-d-learn
mailing list