Template Base Classes, Refering to typeof(this)
Travis Boucher
boucher.travis at gmail.com
Wed Nov 4 10:35:45 PST 2009
I am writing a generic vector base class. The class implements all of
the operator overloads so I don't have to implement them over and over
and over for each type of vector class.
class VectorBase(size_t S, T) {
T[S] data;
...
}
class Vector3f : VectorBase!(3, float) { ... }
The problem I am having is implementing operations that can take a
matching vector. I can't figure out the proper way of declaring the
type of input.
eg.
void opAssign(VectorBase!(S, T) r);
> function VectorBase!(3LU,float).VectorBase.opAssign identity
assignment operator overload is illegal
void opAssign(this r);
> basic type expected, not this
The only way I can think of handling it is to add another parameter to
the template declaration, eg:
class VectorBase(size_t S, T, N) { ... }
class Vector3f : VectorBase!(3, float, Vector3f) { ... }
But I would like to avoid that if possible.
Any hints on how to implement this so I can keep my original
declaration? class VectorBase(size_t S, T)
More information about the Digitalmars-d
mailing list