Array initialization with common base - Best way?

Ary Borenszweig ary at esperanto.org.ar
Sun Nov 9 13:47:25 PST 2008


deadimp escribió:
> That's the problem I had mentioned, though - the type of the entire array being inferred from the first element rather than the context (i.e. what it's initializing if not declared as 'auto') or subsequent elements (which would be a bit difficult...).
> When I try that, the compiler prints this error message: (formatted for this context)
> "Error: cannot implicitly convert expression (new BadChild) of type BadChild to GoodChild"
> 
> I'm not sure what a good syntax replacement would be. C# / Java style new array instantiations wouldn't really fit in syntactically with the already established style of arrays. But maybe there's a way the type of an array coud be explicitly stated without having to cast to make the type inference correct.
> 
> 
> Jérôme M. Berger Wrote:
> 
>> 	I would replace the last line with:
>> Base[] list = [ new GoodChild, new BadChild, ...];
>>
>> 	It's clearer, there's less typing and it won't suddenly fail if you
>> remove the first element and accidentally remove the cast at the
>> same time or if you add a new first element and forget to add the
>> cast...
>>
>> 		Jerome

Can't the compiler try to set the array's component type to the most 
general type of it's elements, by combining the most general types by pairs?

Hmmm... now that I think it, it's not that easy because of interfaces. 
Did this subject was ever discussed? If not, I'll try to think of an 
algorithm for this. (because if it was discussed, there must be a good 
reason for not doing this)


More information about the Digitalmars-d-learn mailing list