Компилятор выдает ошибку, поскольку _z
не существует в классе X
;он существует в классе MainClass
.Если вы хотите вызвать метод для Z
объекта из X
, вам нужно либо предоставить X
свой собственный Z
объект, либо передать его ему в качестве параметра.То, что из этого подходит, зависит от того, что вы пытаетесь сделать.
Я думаю, что ваша путаница может заключаться в следующем: вы думаете, что, поскольку в MainClass
есть и член X
, и член Z
они должны иметь возможность доступа друг к другу.Это не так, как это работает.MainClass
может обращаться к ним обоим, но объекты _x
и _z
в своих функциях-членах не имеют представления ни о чем, кроме своего собственного класса.