It all worked (eventually). Some points to note though for anyone else who may ever read this thread (none of them I assume are anything other than typical C++ requirements).

First mistake, in a class named D3DObj I forgot to add D3DObj:: before the function definitions. This threw all sorts of errors. So for example this:

Code:
void InitDirectX (parameters)
failed whereas:

Code:
void D3DObj::InitDirectX (parameters)
was ok. For some bizarre reason I kept on getting compiler errors stating the function declaration in the class and the function definition below it did not match. This was even after they did, although my machine was running very slow at the time so after a while the error would clear. That was a bit of a strange one.

Also where I forgot to define constructor and destructor functions but left their declarations in the class I actually managed to get a linker error. Seems the compiler was happy to allow it to pass hoping they were defined elsewhere, when they were not. Was confounded at first as to how I got a linker error from a header file which just had a class declaration in it.

Only last bit of trouble I had was when I passed a ComPtr into a function assuming for ComPtr's I did not need to pass by reference for some reason. Well I did and the debugger showed me some nullptr errors as a result of passing copies rather than by reference.

All works ok now and the whole thing sits in one header file

Thanks.