Hello! I know this is an ancient thread, but it’s one of the first that came up on Google when searching for classes with nested objects. I’ve been able to get it working and wanted to share (this is using the adv3lite library, but it could be easily adapted to adv3):
class Ship : Enterable {
exteriorDoor = nil;
bridge = nil;
interiorDoor = nil;
bridgeName = nil;
bridgeDesc = nil;
exDoorName = nil;
exDoorDesc = nil;
inDoorName = nil;
inDoorDesc = nil;
firstRoom = bridge;
preinitThing()
{
addVocab(';;ship');
exteriorDoor = new Door();
exteriorDoor.name = exDoorName != nil ? exDoorName : 'exterior door';
exteriorDoor.desc = exDoorDesc != nil ? exDoorDesc : 'This is the exterior door';
exteriorDoor.moveInto(self);
bridge = new Room();
bridge.name = bridgeName != nil ? bridgeName : 'Ship\'s Bridge';
bridge.desc = bridgeDesc != nil ? bridgeDesc : 'This is the ship\'s bridge';
interiorDoor = new Door();
interiorDoor.name = inDoorName != nil ? inDoorName : 'interior door';
interiorDoor.desc = inDoorDesc != nil ? inDoorDesc : 'This is the interior door';
interiorDoor.moveInto(firstRoom);
exteriorDoor.otherSide = interiorDoor;
interiorDoor.otherSide = exteriorDoor;
bridge.out = interiorDoor;
connector = exteriorDoor;
remapIn = exteriorDoor;
isListed = true;
inherited();
}
}