Показать сообщение отдельно
Старый 09.09.2011, 02:32   #17
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: mutable volatile extern register auto typename explicit

я не вкурил. какой смысл в const в функциях?
у ноды есть логическое состояние и физическое.
const заставляет физически быть объект константным
а mutable - логически.

почему лучше ориентироваться именно на логическое состояние:
возьмем для примера функцию построения бяки до ноды

void BuildBaka(Node *toNode)
{
...toNode()->getLocalMatrix();
...toNode()->setPosition -< логическая ошибка, не должно компилироваться. но если убрать константность метода - то компилироваться будет. 
}
void BuildBaka(const Node *toNode)
{
...toNode()->getLocalMatrix(); <- без mutable не компилируется
...toNode()->setPosition <- не компилируется, логическая ошибка, все правильно.
}
ну косяк же очевидный, не?..
не. помоему получение матрицы очень даже минимальная команда. куда минимальнее?
или предлагаете выносить в клиентский код что то вроде:
if(node->NeedRebuildLocalMatrix())
node->RebuildLocalMatrix();

node->getLocalMatrix();
код, кстати, деалет совершенно то, что от него ожидают - возвращает локальную матрицу объекта
каким именно способом он это делает - клиенский код волновать не должно.
(Offline)
 
Ответить с цитированием