I need to define a function in a superclass that should return the same type of object on which it is called
example : (constructors, functions and properties removed, for clarity) class Tuple { > public Tuple add (Tuple another) { > // ... > } > } > class Point : Tuple { > // function 'add' inherited > } The class Point is 99% equal to Tuple, with only a couple of added methods now the test: Tuple t = new Tuple (...); > Tuple t_other = new Tuple(...); > Tuple t_result = t.add(t_other); // ok, no problem > > Point p = new Point (...); > Point p_other = new Point (...); > Point p_result = p.add(p_other); // compiler error The compiler complains that the function return type is not assignable to a variable of type Point (since it is a Tuple) surely I can write Tuple p_result = p.add(p_other); // ok But this make the program less readable. I know that this behaviour is typical of several oo languages, but in Go (and Pascal and Delphi ...) it is possible to define type synonyms, like type Point = Tuple; So that Point and Tuple are actually identical types. Is it possible to have them also in Vala, or is it there a way to bypass the problem ? Best regards. Maurizio. _______________________________________________ vala-list mailing list vala-list@gnome.org https://mail.gnome.org/mailman/listinfo/vala-list