PMyBaseObj = ^TMyBaseObj;
Why bother? Any class fields already are pointers.

When you have
[pascal]var
A, B: TMyBaseObj;
...
B.SomeField:= A;[/pascal]
-- it is a poiner operation.
You can call Assigned() on A, B, or B.SomeField, cast them to pointer or assign nil to them.

The construct
[pascal]var
A: TMyBaseObject = nil;
[/pascal]is pretty valid.