Кажется, вы не из C ++ (C #?).В ответ на некоторые из ваших запросов: Правильный способ обращения к глобальному из области вашего объекта :: read () - это просто Show (Head) или :: Show (head) - я подозреваю, что причина, по которой у вас возникают проблемы, заключается в том, чтоhead не определен.
В вашей основной процедуре вам нужно использовать оператор -> для разыменования указателя, а не: p.obj.brach (p) вы хотите p-> obj-> brach (p)
Похоже, что в коде и идеях, выраженных здесь, есть еще много неправильного, но вам сложно посоветовать без дополнительного исходного кода и идеи о том, что вы пытаетесь сделать.