Constructor call must be in a constructor
Jesse Phillips
jessekphillips+D at gmail.com
Wed Jul 6 16:22:40 PDT 2011
Loopback Wrote:
> Hi!
>
> While implementing and overloading several different operators for my
> structure I've got stuck with an error.
>
> As noticed in the attachment, in my opBinaryRight function I mimic the
> opBinary (left) operator by instantiating the structure itself to avoid
> implementing duplicates of the binary operator overloads.
>
> The opBinaryRight operator is defined as following:
>
> DVector2 opBinaryRight(string op, T)(T lhs) if(Accepts!T)
> {
> // Error: template instance vector.DVector2.__ctor!(DVector2) error
> instantiating
> return DVector2(lhs).opBinary!op(this);
> }
>
> I create an additional DVector2 structure and then calls the opBinary
> operator. When creating this DVector2 structure the following
> constructor gets called:
>
> this(T)(T arg) if(Accepts!T)
> {
> static if(isScalar!T)
> this(arg, arg);
> else
> // Error: constructor call must be in a constructor
> this(arg.tupleof);
> }
>
> [Blah, blah, blah]
This is probably related to a question recently asked on SO, which you might have even been the author. But for synergy: http://stackoverflow.com/questions/6553950/how-to-use-template-constructors-in-d
More information about the Digitalmars-d-learn
mailing list