I can fully understand why you prefer the setter to return a value. The problem, as I see it, is that other people might expect it to return a value too, but a different one. (If a setter returned a value, I, for example, would expect it to be the old one.) Thus, in code that may be used by a variety of people (and I think you should always code with this possibility in mind), the best practice is to avoid this ambiguity by returning nothing.
About the Author
Stephen C. Dewhurst was among the first users of C++ at Bell Labs. He has more than eighteen years of experience in applying C++ to problem areas such as compiler design, derivative securities trading, e-commerce, and embedded telecommunications. He is the coauthor of Programming in C++ (Prentice Hall, 1989), a contributing editor for C/C++ Users Journal, and a former columnist for C++ Report. Steve is also the author of two C++ compilers and numerous articles on compiler design and C++ programming techniques.