operator-overloading

Why is overloading operator&() prohibited for classes stored in STL containers?

Suddenly in this article ("problem 2") I see a statement that C++ Standard prohibits using STL containers for storing elemants of class if that class has an overloaded operator&(). Having overloaded operator&() can indeed be problematic, but looks like a default "address-of" operator can be used easily through a set of dirty-looking cas...

C++ Unary - Operator Overload Won't Compile

I am attempting to create an overloaded unary - operator but can't get the code to compile. A cut-down version of the code is as follows:- class frag { public: frag myfunc (frag oper1, frag oper2); frag myfunc2 (frag oper1, frag oper2); friend frag operator + (f...

What is the rationale to not allow overloading of C++ conversions operator with non-member functions

C++0x has added explicit conversion operators, but they must always be defined as members of the Source class. The same applies to the assignment operator, it must be defined on the Target class. When the Source and Target classes of the needed conversion are independent of each other, neither the Source can define a conversion operator...

Method overloads resolution and Jon Skeet's Brain Teasers

Jon's Brain Teasers Here Be Spoilers... I'm looking at the answer to #1, and I must admit I never knew this was the case in overload resolution. But why is this the case. In my tiny mind Derived.Foo(int) seems like the logical route to go down. What is the logic behind this design decision? BONUS TIME! Is this behaviour a result of ...

signature output operator overload

hi, do you know, how to write signature of a function or method for operator<< for template class in C++? I want something like: template <class A> class MyClass{ public: friend ostream & operator<<(ostream & os, MyClass<A> mc); } ostream & operator<<(ostream & os, MyClass<A> mc){ // some code return os; } But this just won't ...

+= Overloading in C++ problem.

I am trying to overload the += operator for my rational number class, but I don't believe that it's working because I always end up with the same result: RationalNumber RationalNumber::operator+=(const RationalNumber &rhs){ int den = denominator * rhs.denominator; int a = numerator * rhs.denominator; int b = rhs.numerator * d...

Problem using delete[] (Heap corruption) when implementing operator+= (C++)

I've been trying to figure this out for hours now, and I'm at my wit's end. I would surely appreciate it if someone could tell me when I'm doing wrong. I have written a simple class to emulate basic functionality of strings. The class's members include a character pointer data (which points to a dynamically created char array) and an ...

Overloading new, delete in C++

i came across this line is stroustrup An operator function must either be a member or take at least one argument of a user-defined type (functions redefining the new and delete operators need not). Dont operator new and operator delete take an user defined type as one of their arguments? what does it mean, am i missing something here ...

When I overload the assignment operator for my simple class array, I get the wrong answer I expect

//output is "01234 00000" but the output should be or what I want it to be is // "01234 01234" because of the assignment overloaded operator #include <iostream> using namespace std; class IntArray { public: IntArray() : size(10), used(0) { a= new int[10]; } IntArray(int s) : size(s), used(0) { a= new int[s]; } int& operator[]( int...

Working with operator[] and operator=

Given a simple class that overloads the '[ ]' operator: class A { public: int operator[](int p_index) { return a[p_index]; } private: int a[5]; }; I would like to accomplish the following: void main() { A Aobject; Aobject[0] = 1; // Problem here } How can I overload the assignment '=' operator in...

Recursion problem overloading an operator

I have this: typedef string domanin_name; And then, I try to overload the operator< in this way: bool operator<(const domain_name & left, const domain_name & right){ int pos_label_left = left.find_last_of('.'); int pos_label_right = right.find_last_of('.'); string label_left = left.substr(pos_label_left); string l...

C++ Code Clarification Needed..

Hi guys I'm trying to understand what the code below says: struct compare_pq; struct compare_pq { bool operator() (Events *& a, Events *& b); }; std::priority_queue<Events *, std::vector<Events *>, compare_pq> eventList; i looked at what priority_queue is and how its declared but can't quit understand what compare_pq is doing ...

Implementing Operator Overloading with Logarithms in C++

Hello my friends, I'm having some issues with implementing a logarithm class with operator overloading in C++. My first goal is how I would implement the changeBase method, I've been having a tough time wrapping my head around it. I have tried to understand the math behind changing the base of a logarithm, but i haven't been able to....

operator overloading(friend and member function)

Hi, Could anybody tell me the difference between operator overloading using the friend keyword and as a member function inside a class? also what is the difference incase of any unary operator overloading i.e., as a friend and as a member function ...

Operator overloading - is it really reasonable to forbid?

Java forbids operator overloading, but coming from C++ I do not see any reason for that. In languages where operator symbols are symbols as any other, same rules apply to "+" as to"plus" and there is no problem. So what is the point? Edit: To be more concrete, show me which disadvantage overloaded "+" may have over overloaded "equals". ...

C++ increment operator

How to differentiate between overloading the 2 versions of operator ++ ? const T& operator ++(const T& rhs) which one? i++; ++i; ...

Problems with first argument being string when overloading the + operator in C++

I have an selfmade Stringclass: //String.h String & operator = (const String &); String & operator = (char*); const String operator+ (String& s); const String operator+ (char* sA); . . //in main: String s1("hi"); String s2("hello"); str2 = str1 + "ok";//this is ok to do str2 = "ok" + str1;//but not this way //Shouldn't it automatica...

template; operator (int)

Hi, regarding my Point struct already mentioned here: http://stackoverflow.com/questions/2794369/template-class-ctor-against-function-new-c-standard is there a chance to replace the function toint() with a cast-operator (int)? namespace point { template < unsigned int dims, typename T > struct Point { T X[ dims ]; //umm??? ...

Where to add an overloaded operator for the tr1::array?

Since I need to add an operator& for the std::tr1::array<bool, N> I wrote the following lines template<std::size_t N> std::tr1::array<bool, N> operator& (const std::tr1::array<bool, N>& a, const std::tr1::array<bool, N>& b) { std::tr1::array<bool, N> result; std::transform(a.begin(), a.end(), b.begin(), result.begin(), ...

C++ stream as a parameter when overloading operator<<

I'm trying to write my own logging class and use it as a stream: logger L; L << "whatever" << std::endl; This is the code I started with: #include <iostream> using namespace std; class logger{ public: template <typename T> friend logger& operator <<(logger& log, const T& value); }; template <typename T> logger& operator <...