Здравствуйте Андрей Тарасевич, Вы писали:
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);
не вызывал ни каких вопросов.
Итак, кто нить знает
ЗАЧЕМ НАКЛАДЫВАТЬ ОГРАНИЧЕНИЯ на присвоение к пропертям?