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.
There are two ways you can approach this. The normal way with operators is, you just create a normal two operand operator, and then chain the calls together. For example `a + b + c + d` => `operator+(operator+(operator+(a + b), c), d)`.

Alternately, create your own named function or member that provides a multi-parameter version, using the name to accurately describe what it does.