how to access struct member using [] operator?

Namespace via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Sep 25 02:01:44 PDT 2016


On Sunday, 25 September 2016 at 04:54:31 UTC, grampus wrote:
> Dear all
>
> For example, I have a struct
> struct point{int x;int y}
> point a;
>
> Is there an easy way to access x and y by using a["x"] and 
> a["y"]
>
> I guess I need to overload [], but can't figure out how.
>
> Someone can help? Thank you very much

----
import std.stdio;

struct Something
{
     int x, y;
     float z;

     auto opIndex()(string member) {
		switch (member) {
			case "x": return this.x;
			case "y": return this.y;
			case "z": return this.z;
			default: assert(0);
		}
     }
}

void main(string[] args)
{
     Something s;
     writeln(s["x"]);
     writeln(s["z"]);
}
----


More information about the Digitalmars-d-learn mailing list