operator-overloading

Ambiguous operator <<

Guys having code : #include "stdafx.h" #include "Record.h" template<class T>//If I make instead of template regular fnc this compiles //otherwise I'm getting an error (listed on the very bottom) saying // that operator << is ambiguous, WHY? ostream& operator<<(ostream& out, const T& obj) { out << "Price: " << (obj.getP...

Stream Operator Overloading

Why should overloading of stream operators(<<,>>) should be kept as friends rather than making them members of the class? ...

Overloading + Operator With Templates.

Hey, I'm getting a linker error LNK2019: unresolved external symbol when trying to use an overloaded + operator. I'll show you snip-its from the class, and how I'm using it in main. If you need to see more, let me know, I'm just going to try and keep things concise. /** vec.h **/ #ifndef __VEC_H_ #define __VEC_H_ #include <iostream> #...

list of ruby operators that can be overloaded

Is there a list anywhere of all ruby operators that can be overloaded? (Not the ones that can't) ...

c++ typing confusion with operators << and []

I am trying to print a value of an array element as cout << array[0], (where the array is some glorified class using operator[]), but the C++ typing system seems incredibly confusing. The GCC error is this: example.cpp:44:20: error: no match for ‘operator<<’ in ‘std::cout << a_0.fixedarr<T, N>::operator[] [with T = int, long unsigned in...

How to overload operator-> on a "generating" iterator?

I'm defining an iterator type that does not store its current value explicitly. Instead, it's a wrapper around another iterator, and returns std::pairs of the underlying iterator's values and another value. The relevant part of the class definition: class MyIterator : public std::iterator<input_iterator, std::pair<Foo *, Bar *> > { ...

Enabling a '.equals' equivalent for PHP5 Classes

Greetings, I've got two instances of a PHP5 Class (say ClassA), and I want to compare to see whether they are equal. In C#, I can write a .equals(ClassA other) method for ClassA, which will be overloaded onto the == operator. Is there an equivalent way in PHP5 to overload a method in a class and have that be used for == comparison, ...

operator== with double dispatch in C++

How should one implement operator==(const Base& base) to compare subclasses s.t. the calls would be properly dispatched when called as Base* base1 = new Derived1(); Base* base2 = new Derived2(); base1->operator==(*base2)? ...

C++ Conversion Operator Overloading issue

I have my own SmartPointer class. There are cases where SmartPtr contain a class that inherite from a Base class, and I would like to convert SmartPtr<ClassX> into SmartPtr<BaseClassOfClassX>; I am trying to overload the SmartPtr Conversion operator to do this. It work fine for the Class themself, such as: template<class newType> ope...

If I implement an operator for a class, is it possible that it won't be inline?

Are operators always inlined? struct foo { void operator ()() { // Do tons of work. } }; int main() { foo f; f(); } ...

getting the name of the invoked function

when using either the '.', '->' or '->*' operators is there any way of getting the name of the function invoked (or the name of the variable in the case of '->*' and everything goes. EDIT: Just to clarify I'm not talking about reflection but more something in the line of 'function' basically I want to create an overload of an operator (...

F# Operator/Function Confusion

I'm just getting started on F#, and when playing around with operator overloading, I've run into something I don't quite understand. Now, I understand that you can't use, for example, +* as an overloaded prefix operator; it can only be an infix operator. Here's where I get confused, however: let (+*) a = a + a * a;; If I run this, fsi...

Overloading operator<< to accept a template function

I'm trying to be able to write an extensible grammar using functions, but can't seem to find the right syntax for accepting a template function. I'm using Visual C++ 2008. It will accept a variable of the same type as the template function, or a similar non-template function, but not the template function itself. Error 1 error C2...

Are there any problems with this overload of operator new?

I was thinking about some memory pool/allocation stuff I might write so I came up with this operator new overload that I want to use to facilitate reuse of memory. I'm wondering if there are any problems you guys can think of with my implementation (or any other possible ones). #include <cstddef> namespace ns { struct renew_t { }; ...

C++: Inheritance and Operator Overloading

I have two structs: template <typename T> struct Odp { T m_t; T operator=(const T rhs) { return m_t = rhs; } }; struct Ftw : public Odp<int> { bool operator==(const Ftw& rhs) { return m_t == rhs.m_t; } }; I would like the following to compile: int main() { Odp<int> odp; odp = 2; ...

C++: Using base class's private members in equality test

I would like the following to compile, but it does not: template <typename T> struct Odp { public: operator*() const { return m_p; } T* operator->() const { return m_p; } T** operator&() { return &m_p; } private: T* m_p; }; struct Ftw : public Odp<int> { bool o...

Operator overloading in C

I am trying to overload some operators: /* Typedef is required for operators */ typedef int Colour; /* Operators */ Colour operator+(Colour colour1, Colour colour2); Colour operator-(Colour colour1, Colour colour2); Colour operator*(Colour colour1, Colour colour2); Colour operator/(Colour colour1, Colour colour2); I get this error fo...

Why is Date1.CompareTo(Date2) > 0 faster than Date1 > Date2?

Another "unimportant" performance question. Unimportant because mostly code-readability is much more important than a few milliseconds, but interesting anyway. I noticed that there are differences between different DateTime Comparisons. I checked 3 alternatives: Dim clock As New System.Diagnostics.Stopwatch Dim t1, t2, t3 As Lo...

Does an immutable list that overloads '+' makes sense?

It certainly does not break from the standard practice of the .NET framework. When I see a a + b I always assume something new will be created. static void Main(string[] args) { var list = BuildList(ImmutableList<int>.Empty); var sum = (list + 500).Sum(); Console.WriteLine(sum); Console.ReadLine(); } static ImmutableLis...

+= on a vector without boost

Is there any way to use the += operator with a vector without using boost or using a derivated class? Eg. somevector += 1, 2, 3, 4, 5, 6, 7; would actually be somevector.push_back(1); somevector.push_back(2); somevector.push_back(3); etc. ...