Bart <bc@[EMAIL PROTECTED]
> writes:
> On May 9, 7:32 pm, Keith Thompson <ks...@[EMAIL PROTECTED]
> wrote:
[...]
>> There are languages that allow the prefix to the "." "operator"
>> to be either a structure or a pointer to structure. Usually this
>> is done by making "." polymorphic, accepting either a structure or
>> a poitner as its prefix. (It's already polymorphic in the sense
>> that the prefix can be of any structure type.)
>>
>> IMHO the "C-like" way to do this would have been to say that the
>> prefix to the "." "operator is *always* a pointer to struct, and
>> that an expression of struct type, if and only if it's followed by
>> ".", decays to a pointer to the struct. This would be analagous
>> to the behavior of [], which acts as if it operated on an array
>> but really only operates on a pointer that results from a conversion.
>
> So the left side side of "." is not just a struct type, but any chain
> of pointers to a struct, multi-dereferenced as necessary to get at the
> struct that "." needs? (This shows up a weakness in -> which can only
> deal with one dereference at a time.)
Hmm. I hadn't thought about that. Now that I do, I think the answer
is no. Given this hypothetical feature as I've described it, if the
prefix of "." is a pointer to pointer to struct, it wouldn't decay;
the implicit conversion would be defined only for a pointer to struct.
Since the language doesn't actually have this feature, of course,
you're free to define it any way you like, but personally I don't
think the extra complication is worthwhile. I don't think accessing a
member given a pointer-to-pointer-to-struct is nearly as common as
accessing a member given either a pointer-to-struct or a struct, and I
think the pointer-to-pointer-to-struct case is unusual enough to call
for a distinct syntax. (The language I'm familiar with that does
allow "foo.bar" where foo is either a structure or a pointer to
structure doesn't allow it to be a pointer to pointer to structure;
when I used that language, I never missed the ability to do that. (It
was Ada.))
[snip]
--
Keith Thompson (The_Other_Keith) <kst-u@[EMAIL PROTECTED]
>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"


|