Code:
        void MyFunctA ()
        {
                MyFunctB(this);      'this' is a pointer to a cTest
        }
        void MyFunctB (cTest a)  'a' is an actual cTest object
        {
        }
Types have to match or be convertible. Why would you pass the 'this' pointer? It's automatically passed implicitly. Now you just have two copies.