Question: I can operate class+class (for example I can do date+date), but can anyone explain how can I do class+class+class please? C++ does not let me define an operator with 2 parameters.

Answer: 
By making them friends of the class, you would make sure they are binary operators, and define them separately, like so:

```
class someclass
{
     int a;
public:
     someclass();
     ...
     friend someclass operator+(const someclass & lhs, const someclass & rhs);
};

someclass operator+(const someclass &lhs, const someclass &rhs)
{
     someclass a = lhs;
     a.a = a.a + rhs.a;
     return a;
}

```

you will, of course need to define a copy constructor (someclass(const someclass & old);) and the other functions of the class, but this method has always worked for me, and it was how I was taught in college.
I suggest reading <http://www.cs.rit.edu/~mjh/docs/c++-faq/operator-overloading.html>

To the best of my understanding you do not need 2 parameters here. Your overload needs to return an object which the result of your operation. In this case your example class+class+class can actually be written as class+(class+class) so that (class+class) is processed first and then the result of that is added to the third class.