well, for the compiler b(...) looks like function call, but I guess that you mean a multiplication then the multiplication sign * is required. I.e. a=b * (--c-a);
For a start these operators are not actually acting on the object they're being called from so they're completely useless. Also I believe it's best to pass both the arguments and the return value of operators as a reference to the objects in question.
e.g.
1 2 3 4 5 6 7 8 9 10 11 12 13
class A{
public:
A& operator=(const A& arg){
x = arg.x;
return *this;
}
A& operator-(const A& arg){
return A(x - arg.x);
}
//-- operator is usually short for -=1 but I'm not sure what you want here
private:
int x;
};