|
Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript |
D - Struct and operator overloading
Sometime ago someone suggested that to make a vector that is located on
stack instead of on heap one has to make it struct instead of class. I
am trying it just now. The question is though, how to use operator
overloading in such cases? Normally if it was a class I would new a
return value, but here... hmmm... Can anyone write me an example of how
to make add operator for two STRUCT vectors?
tia,
ssuukk
--------------------------------
alias real frReal;
struct frVector
{
frReal x; frReal y; frReal z;
void set(frReal xx, frReal yy, frReal zz) {
x=xx; y=yy; z=zz;
}
void set(frVector vv) {
x=vv.x; y=vv.y; z=vv.z;
}
frVector opNeg() {
????????
}
}
Dec 17 2003
This is what you need. In article <brppgb$2ei0$1 digitaldaemon.com>, ssuukk says... Dec 17 2003
And if we had constructors for structs, it would be quite a bit more
elegant.
frVector opNeg() { return frVector(-x,-y,-z); }
But we don't. :(
Sean
"Patrick Down" <Patrick_member pathlink.com> wrote in message
news:brpva6$2nd2$1 digitaldaemon.com...
Dec 17 2003
In article <brq7mn$1t2$1 digitaldaemon.com>, Sean L. Palmer says... Dec 17 2003
Smooth! C "Patrick Down" <Patrick_member pathlink.com> wrote in message news:brqa50$5im$1 digitaldaemon.com...In article <brq7mn$1t2$1 digitaldaemon.com>, Sean L. Palmer says... Dec 17 2003
Dec 18 2003
I made frVector struct with static make function as quasi-constructor.
Strangely for some time in the day the compiler didn't complain, but now
(in the second half of the day) it does:
// niby-konstruktor
static frVector make(frReal xx, frReal yy, frReal zz){
frVector result;
result.x=xx; result.y=yy; result.z=zz;
return result;
}
frVector opMul(frVector vv){
return frVector.make(vv.x*x,vv.y*y,vv.z*z);
}
gives:
"undefined identifier module frVector.make" error. I don't get it. Why
did it work before?
Dec 18 2003
ssuukk wrote:Sometime ago someone suggested that to make a vector that is located on stack instead of on heap one has to make it struct instead of class. I am trying it just now. The question is though, how to use operator overloading in such cases? Normally if it was a class I would new a return value, but here... hmmm... Can anyone write me an example of how to make add operator for two STRUCT vectors? tia, ssuukk Dec 17 2003
|