| Thread overview | |||||
|---|---|---|---|---|---|
|
June 03, 2004 this in structs | ||||
|---|---|---|---|---|
| ||||
Hi
Why doesn't this work:
struct Vec3
{
float x, y, z;
static Vec3 opCall(float x, float y, float z) {
Vec3 v;
v.x = x;
v.y = y;
v.z = z;
return v;
}
Vec3 opMul(float v) {
return Vec3(x * v, y * v, z *v);
}
Vec3 opDiv(float v) {
float oneOverV = 1.0f / v;
return this * oneOverV;
}
}
DMC output:
incompatible types for ((this) * (oneOverV)): 'Vec3 *' and 'float'
While this works:
class Vec3C
{
public float x, y, z;
public static Vec3C opCall(float x, float y, float z) {
Vec3C v;
v.x = x;
v.y = y;
v.z = z;
return v;
}
public Vec3C opMul(float v) {
return Vec3C(x * v, y * v, z *v);
}
public Vec3C opDiv(float v) {
float oneOverV = 1.0f / v;
return this * oneOverV;
}
}
Is this a pointer when using structs ?
Cheers Tobias
| ||||
June 03, 2004 Re: this in structs | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Tobias Neukom | Tobias Neukom wrote: > Is this a pointer when using structs ? > > Cheers Tobias Yes! It's done for constancy with classes. -- -Anderson: http://badmama.com.au/~anderson/ | |||
June 03, 2004 Re: this in structs | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Tobias Neukom |
> Is this a pointer when using structs ?
The documentation doesn't say but it looks like it is. I somehow had the impression 'this' wasn't allowed in stucts but looking over the doc I don't know why I ever thought that 'cause it sure looks ok now. I suppose the section in the documentation about 'this' should mention for structs a pointer is used instead of a reference. Or maybe that's what Walter meant by "this resolves to a reference to the object that called the function".
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply