Make a group of objects follow a curve
Above are 10 separate objects plus a red square.  10 duplicator objects have [Curve Modifier].  The 10 numbers are parented separately to a duplicator objects.  Duplicators 1-9 have one child.  The 0 duplicator has 2 children the zero and the red square.  For this small example the benefits of repeating elements is not very strong. Carefully planned object heirachy duplication or small Python scripts can make the creation more efficient.



The zero and red square are parented to the same object which are meant to represent a small child parent one level hierarchy.Further hierarchy has not been explored.

The jump is a mistake in the GIF production by GIMP.  The gray ring shows scale.  The gray square indicated movement in the x direction.



The yellow child cylinders have been duplicated by the parent object, the light blue planes.  The circular curve is a simple track.  The yellow cylinders have retained original shape, no deformation.  Click to see larger image above.  Note that some of the info has been pinned locked with the push pin icon, to achieve more information on one screen capture.

Typically a composed train object has parent object.  The train parent object can be parented to a plane duplicator.  You have included no images in your question so it has an mysterious quality to it. Lets guess that a train hierarchy has many cars and a car has many component Blender Objects.  Each duplicator face can control a train car indirectly via parenting. A small Python script may help in this regard.  One suggestion is to use many duplicator objects on the same curve.

Consider the 


[Array Modifier] shown above and known in the original question
[Curve Modifier] shown above
[Duplication Panel] shown above ... see https://www.blender.org/manual/editors/3dview/transform/duplication/duplifaces.html
[Path Constraint] not shown


The curve modifier introduces shape changes, or deformation, so you must use another technique to control that if desired.  This can be viewed as good or bad. The light blue planes and red cylinder both have [Array Modifier] and [Curve Modifier].  The [PlaneDuplicator] modifiers are show above. The red cylinders look like seeds as the [Curve Modifier] deformation was intentionally shown to a large degree to emphasize a potential problem. Note the blue [PlaneDuplictor] objects have been deformed to a lesser degree into trapezoids.

Parent Child relationship plays the major role in Duplicator panel.  The parent duplicates the children.  The reverse might seem odd.

The duplication panel for the [PlaneDuplicator] is shown which indicates to duplicate the children objects on [Faces], in this case only a single face is present.  

The Yellow Cylinder is parented to the [PlaneDuplicator].  This can be seen in image above.  The [PlaneDuplicator] is not rendered, this is the standard behavior.  

Note the parent is deformed.  The duplicated children are not deformed.

Constraints can be copied by menu. Press [space] in the 3DView Window and type [copy] to begin matching.  The regular menu has this option.

By searching here at BSE you can see many questions about the 

[Follow Path Constraint]

Note that there is not necessarily 100% coordination between the offset value in the [Follow Path Constraint] and the spacing you may need.