Re[2]: Знатоки стандарта, ау!
От: Lummox  
Дата: 12.03.02 04:47
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:
L>>В пятом Билдере такая борода:
L>>
L>>if(some_bool_value)
L>>   (Button1->Height+=30),(Button1->Width+=30);
L>>

L>>вызывает следующий напряг:
L>>[C++ Error] : E2492 Properties may only be assigned using a simple statement, e.g. "prop = value;"
L>>В то время, как Borland C++5, Borland Builder1.0 и MSVC6 не имеют ни каких претензий к подобному коду.
L>>Вопроса два:
L>>1) почему вдруг стало необходимо накладывать ограничения на присвоения к пропертям?

АТ>Вполне логичное ограничение. Впрямую функциональность оператора '+=' через интерфейс проперти реализовать невозможно. А автоматически интерпретировать такую запись, как 'Button1->Height = Button1->Height + 30' — это совершенно не в стиле С++. Если тебе надо сделать 'Button1->Height = Button1->Height + 30' — так и пиши.


1) Впрямую функциональность оператора '+=' через интерфейс проперти реализовать МОЖНО! У Билдера не с "+=" напряги возникли.
2) Билдер сказал, что "присвоение к пропертям возможно только при помощи простых операторов", тогда как опреатор
(Button1->Height+=30),(Button1->Width+=30);

является сложным (в нем на самом деле два оператора, разделенных запятой). Если заменить это на
{
   Button1->Height+=30;
   Button1->Width+=30;
}

, то ни каких проблем не возникает (хотя тут есть +=), поскольку присвоение осуществляется простыми операторами. Вопрос в следующем: ЗАЧЕМ НАКЛАДЫВАТЬ ОГРАНИЧЕНИЯ на присвоение к пропертям? Т.е. в более ранних версиях Билдера не было этого ораничения и по этому опреатор
(Button1->Height+=30),(Button1->Width+=30);

не вызывал ни каких вопросов.
Итак, кто нить знает ЗАЧЕМ НАКЛАДЫВАТЬ ОГРАНИЧЕНИЯ на присвоение к пропертям?
В отличье от себя — тебе я верю...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.