я не вкурил. какой смысл в 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();
код, кстати, деалет совершенно то, что от него ожидают -
возвращает локальную матрицу объекта
каким именно способом он это делает - клиенский код волновать не должно.