On Sat, Oct 3, 2009 at 7:24 AM, David Emerson <dle...@angelbase.com> wrote: > I'd like to create a "double-list" type, which maintains two parallel > lists containing the same elements: one sorted, one unsorted. The > reason to have both: sorted -> fast search; unsorted -> sequential > navigation through the list while elements are being added.
It can be achieved without need of multiple inheritance. In your sample t_double_list should also inherit from t_sorted_list, rather than a t_unsorted_list or t_sorted_list. t_double_list, can be implemented in the following way. As you can see, t_double_list even more flexible, than t_double_list with multiple-inheritance, because actual types of list1 and list2 can be controlled. For example, if you need to use list1 with sorting A, and list2 with sorting B... etc. t_double_list = class (t_list_frame) private flist1 : t_list_frame; flist2 : t_list_frame; function internal_add (const class_in : class_type) : boolean; end; .... constructor t_double_list.create; begin flist1 := t_sorted_list.create; // any type of list can be used here flist2 := t_unsorted_list.create; end; function t_double_list.internal_add (const class_in : class_type) : boolean; begin flist1.add(class); flist2.add(class); Result := true; end; thanks, dmitry _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal