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: 
That's because there is no such operator in general.  

`a + b + c` is `(a + b) + c`. First `a + b`, then the results
of that added to `c`.

EDIT:

If the objects in question are extremely big, so that creating
the temporaries in an expression like `a + b + c` is too
expensive, you can google for template expressions; the basic
idea is that `operator+` doesn't do anything but return an
expression node, which can be evaluated later, as part of the
full expression.
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.