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.
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.