bob (1, 2, 3) is a constructor call. You can't do that outside of a declaration of a new instance.
2nd:
overload operator=().
I'll give you the prototype:
bob& operator=(constint&, constint&, constint&); (I still am learning some of the nuances of returns, but I don't see any reason why not to return as reference on an operator=())
You can set the function to simply assign the values, or erase all of them and then assign the values (like initializing a new instance).
Another way you could accomplish this is by simply assigning it to a new instance:
bob = bob_class(1, 2, 3)
which would simply initialize a new class, then assign the constructed class to the object bob, and finally destroy the temporary instance.
But I suppose if I were being picky about semantics, I might say that when creating a nameless temporary variable like that, you're both declaring and creating in the same statement.
Anyway, IWishIKnew's point was that you can't call a constructor on a variable that's already been constructed, which (as I'm sure you know) is correct.
then you can not just declare bob(1, 2, 3) anywhere in the code. Implicit conversions can yield unexpected results somtimes, but if you want to use them, then you can do that.
Also, I couldn't tell if bob was the classname or an instance (was not defined by his post). Tha's why I used bob_class.