2014-02-09 1 views
0

Я хотел бы изменить вектор, используя обратный вызов мыши glut (условное добавление/стирание на/из него), однако я не могу передать никаких дополнительных аргументов функции обратного вызова и glutMainLoop(), который обрабатывает все обратные вызовы не принимают аргументов. Единственный способ, с помощью которого я могу обойти это, - объявить вектор глобально, но я слышал, что это плохая практика, так что это мое последнее средство.Как манипулировать данными с помощью обратных вызовов GLUT

Это ситуация при использовании глобальной переменной? Если да, есть ли «лучший способ» сделать это? Если нет, как мне подойти к этой проблеме.

+0

Да, вы, возможно, придется использовать некоторые статический метод или какой-то глобальный контекст. И только для записи, глухота - довольно старая библиотека, и в наши дни есть намного лучшие альтернативы, такие как GLFW. –

+0

Хорошо, я посмотрю на использование GLFW, как только закончу этот проект – lightandlight

ответ

0

После дальнейших исследований, похоже, я могу выполнить это с помощью указателей.

Объявить глобально указатель на вектор, а внутри вызова обратного вызова - необходимые методы, например. vector->push_back(x)

В основном создайте векторный объект и назначьте его адрес глобальному указателю и приложите свои обратные вызовы по мере необходимости.

0

Возможно, вы захотите узнать больше о одиночных играх. Они являются хорошим способом обработки глобальных структур внутри большой базы кода.

http://en.wikipedia.org/wiki/Singleton_pattern

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

  • Нет связанных вопросов^_^