Structure's inheritance

Namespace rswhite4 at googlemail.com
Sun May 12 04:54:42 PDT 2013


On Sunday, 12 May 2013 at 11:21:16 UTC, Temtaime wrote:
> Hello to all !
> I'm surprised that there is no structure's inheritance.
>
> There is a problem:
> I want to make Matrix MxN class. I also want to make child 
> classes Square Matrix and Vector from it with additional 
> functions.
> I don't want use "class" cause of "new" overhead. Std 
> typecons's Scoped - workaround with many restrictions, so it 
> isn't true solution.
>
> I'm tried mixin template but there is no luck. I don't know how 
> to declare multiplication operator for example.
>
> Any suggestions ?
> Regards.

You could make the base struct a member of the child struct and 
refer with alias this Base; to the base:

[code]
import std.stdio;

struct A {
public:
	int id;
}

struct B {
public:
	A hidden_a;
	alias hidden_a this;

	int age;

	this(int id, int age) {
		this.age = age;
		this.id = id;
	}
}

void main() {
	B b = B(42, 23);
	writefln("Person #%d is %d years old.", b.id, b.age);
}
[/code]


More information about the Digitalmars-d-learn mailing list