2013-03-26 4 views
0

Я только что через это в коде, и я не понимаю, что он делает, и как это делать то, что он делаетмассив инициализации синтаксиса

pos[iter](1) += 12.0f/900.0f; 

делает (1) инициализирует значение массива в положении iter до 1, затем добавить (12.0f/900.0f) к нему? Я не могу поверить, что это так, как оно используется в цикле, чтобы установить положение текста отладки, каждый цикл устанавливает следующую строку ниже в значение с высоким значением y (нижняя точка на экране). iter может быть 0 или 1 в зависимости от того, в каком списке находится текст отладки.

Я бы понял, если бы это была статическая операция.

+3

Как определить 'pos'? –

+1

Вы должны включить объявление 'pos', чтобы понять эту строку. Это может быть контейнер указателей функций, например. –

+0

Важно то, что это не какой-то странный синтаксис, который вы никогда раньше не видели. Это просто доступ к массиву, а затем вызов функции. –

ответ

5
pos[iter](1) += 12.0f/900.0f; 

pos может быть массивом, карта, или объект класса с перегруженной operator[]. pos[iter] возвращает объект (может быть указателем функции, lambda или классом с перегруженным operator()) и вызывает его с параметром 1. Вызов функции скорее всего возвращает ссылку на возвращаемый объект, поскольку вы можете изменить его значение с помощью +=.

Так, чтобы сделать это ясно, (1) не имеет доступа ко второму элементу. Это просто вызов функции или метода с этим аргументом. Метод возвращает некоторый объект, который имеет соответствующую перегрузку operator += (может быть скаляром или фактическим классом).

+3

Он также может быть указателем на указатель функции ... слишком много возможностей ... – PlasmaHH

Смежные вопросы