Hi everybody,
This year our team is going with a 6-motor drive train, and our programming team came across the problem of RobotDrive only having two motor and four motor constructors. We only have a tank drive, but I personally like using RobotDrive because of the ease of switching between Tank drive and arcade drive. I saw an old post from 2010 mentioning adding a whole new constructor to the RobotDrive file itself, but I wanted to take a different approach.
Would there be anything wrong with writing our own sub-class of CANTalon (or any class that implemented SpeedController, we are just using CANTalons), whose constructor creates three instances of CANTalons, and overrides .set() by calling .set() on each of the Talons, then constructing RobotDrive with two objects of this class, one for each side of the drive train?
Code outline (not guaranteed to compile

)
Code:
public class ThreeMotorGearbox extends CANTalon {
public CANTalon talon1, talon2, talon3;
public ThreeMotorGearbox(int talon1id, int talon2id, int talon3id) {
super(talon1id); //We will be overriding all the important methods, anyway)
talon1 = new CANTalon(talon1id);
talon2 = new CANTalon(talon2id);
talon3 = new CANTalon(talon3id);
}
@Override
public void set(double speed) {
talon1.set(speed);
talon2.set(speed);
talon3.set(speed);
}
}
//Somewhere in the code
public ThreeMotorGearbox leftSide, rightSide;
public RobotDrive driveTrain;
leftSide = new ThreeMotorGearbox(1,2,3);
rightSide = new ThreeMotorGearbox(4,5,6);
driveTrain = new RobotDrive(leftSide, rightSide);