From: Pat on 1 Dec 2009 11:27 Is it possible to define overloaded operators for structures? What I want to do is define a structure to represent cartesian points. ie struct Point { double x; double y; }; and then be able to add, substract, and multiply points like they were scalar variables. ie. Point p1 = {1,2); Point p2 = {4,6}; Point p3 = p1+p2; < this is what I would like to be able to do Point p4 = 5*p1; < Is this possible? This is mainly for convenience, but would really simplify some of the code I need to write. Thanks, Pat
From: Kaz Kylheku on 1 Dec 2009 11:37 On 20091201, Pat <pkelecy@_REMOVETHIS_gmail.com> wrote: > Is it possible to define overloaded operators for structures? Yes, in C++, structs are classes. They can have constructors, destructors, virtual functions, inheritance, etc. > Point p1 = {1,2); > Point p2 = {4,6}; > > Point p3 = p1+p2; < this is what I would like to be able to do This looks exactly like the addition of two complex numbers. C++ has complex numbers! Complex numbers are ideal for representing points on a twodimensional plane, and doing mapping transformations which have a geometric interpretation. For instance, you can rotate a complex number by multiplying it by another complex number. > Point p4 = 5*p1; < Complex numbers do that: multiplication by a real/scalar to scale the vector.
From: Keith Thompson on 1 Dec 2009 11:49 Pat <pkelecy@_REMOVETHIS_gmail.com> writes: > Is it possible to define overloaded operators for structures? In which language? In standard C, no. In C++, yes; consult any C++ textbook.  Keith Thompson (The_Other_Keith) kstu(a)mib.org <http://www.ghoti.net/~kst> Nokia "We must do something. This is something. Therefore, we must do this."  Antony Jay and Jonathan Lynn, "Yes Minister"
From: Pat on 2 Dec 2009 11:15 Kaz Kylheku wrote: > On 20091201, Pat <pkelecy@_REMOVETHIS_gmail.com> wrote: >> Is it possible to define overloaded operators for structures? > > Yes, in C++, structs are classes. > > They can have constructors, destructors, virtual functions, > inheritance, etc. That's good to know! So are they defined the same way as with classes? I have three books on C++ that I'm using for reference, and the examples they give on operating overloading all involve class definitions. I haven't seen any that specifically apply it to a structure. > >> Point p1 = {1,2); >> Point p2 = {4,6}; >> >> Point p3 = p1+p2; < this is what I would like to be able to do > > This looks exactly like the addition of two complex > numbers. C++ has complex numbers! > > Complex numbers are ideal for representing points on a twodimensional plane, > and doing mapping transformations which have a geometric interpretation. > > For instance, you can rotate a complex number by multiplying it > by another complex number. > >> Point p4 = 5*p1; < > > Complex numbers do that: multiplication by a real/scalar to scale the vector. Yes, you're right. The vector calculations I need to perform could be done in terms of complex numbers. I didn't realize C++ could support that. Again, that's good to know, and definitely an option. It all comes down to which would be easier to implement. I currently have everything worked out in terms of pure vector relations (additions, subtractions, dot products, multiplication/division by a scalar), but to rewrite those in terms of complex variables should be pretty trivial. I'll probably try both ways and see which one I like better. Thanks for the help! Pat
From: Pat on 2 Dec 2009 11:21 Keith Thompson wrote: > Pat <pkelecy@_REMOVETHIS_gmail.com> writes: >> Is it possible to define overloaded operators for structures? > > In which language? > > In standard C, no. In C++, yes; consult any C++ textbook. > Yes, I'm working in C++. I have several C++ books, and the overloading examples they show all involve class definitions. Do you know of any texts you could recommend that have good examples of this being applied to structures?

Next

Last
Pages: 1 2 3 4 5 6 7 Prev: Accelerated C++ Chapter 5 Exercise 1 Next: Defining complex data types? 