Why can't structs be derived from?

Nick Sabalausky a at a.a
Wed Mar 16 22:19:51 PDT 2011


"KennyTM~" <kennytm at gmail.com> wrote in message 
news:ilrght$1h5i$1 at digitalmars.com...
> On Mar 16, 11 23:01, Ary Manzana wrote:
>> On 3/15/11 3:29 PM, Andrei Alexandrescu wrote:
>>> On 3/15/11 12:55 PM, Jens wrote:
>>>> Steven Schveighoffer wrote:
>>>>> That's all there is. Structs do not have inheritance, only alias
>>>>> this.
>>>>
>>>> Why don't they though? Inheritance does not have to mean polymorphic. 
>>>> It
>>>> can mean composition, like in C++. I don't understand the reason for
>>>> such
>>>> ugly syntax.
>>>
>>> Using inheritance for composition is frowned upon in C++ for good
>>> reasons. If you want composition, the best is to use composition.
>>>
>>> The reason for the allegedly ugly syntax is that it's considerably more
>>> general. It is often the case that a struct defines an entity that is
>>> implicitly convertible to another entity - could be an rvalue vs.
>>> lvalue, a class vs. another struct vs. a primitive type, could need a
>>> run-time operation etc. Inheritance would offer at best few of these
>>> amenities, whereas 'alias this' offers all with a simple syntax.
>>>
>>>
>>> Andrei
>>
>> Syntax matters. A lot. Which one is more readable/understandable?
>>
>> struct Point2 {
>> int x;
>> int y;
>> }
>>
>> 1.
>>
>> struct Point3 {
>> Point2 point2;
>> alias this point2;
>
> Should be "alias point2 this;"
>
> (strengthening the argument that this syntax is not good?)
>

I've long been convinced that "alias old new;" should really be "alias new = 
old;" The current way confuses me, and I *still* have to consciously stop 
and think about it every time I write an alias statement (including just 
now).





More information about the Digitalmars-d mailing list