Passing Object to function

johncc:
Why will this not compile, I believe it is plain enough c++.

The problem is in the 'mucking about' that Arduino does with your code before compiling it. If you have functions that are not prototyped then it creates prototypes for you and puts them in front of your code. In this case, that means before your type/class declarations. The declarations are inserted after your #includes, so one way to avoid the problem is to put the prototypes in a #included file.