2016-06-13 2 views
-3

У меня есть некоторые глобальные переменные в моей программе, и я старался избегать их, но я не знаю, как ..Избегайте глобальные переменные в моей программе

Вот моя программа: Here

Есть ли альтернативу избегать этих переменных?

И любое другое замечание appriciated слишком

+1

инкапсуляция и создание экземпляра => инкапсуляция глобальной переменной внутри класса, в качестве члена экземпляра, функция put, использующая его как экземпляр этого класса и создать экземпляр внутри ваша основная функция. – Garf365

+0

избегать глобальных переменных !!! так, зачем их определять ??? –

+0

@MohammadrezaPanahi Я имел в виду то, как я объявлял свои переменные глобальными, а не сами переменные. –

ответ

0

Я думаю, у вас есть несколько возможностей.

  1. Создать класс и поместить свои функции и ваши глобальные переменные внутри (предпочтительный способ)
  2. Если вы просто заботитесь о конфликтах имен вы можете использовать unnamed namespaces
  3. Это ваша глобальная переменная используется только одна функция, объявить его как статическую переменную внутри этой функции (ее значение будет сохраняться между вызовами)
+1

. Этот предпочтительный способ - это решение. 1. Избегайте обоих других решений с помощью маски или адреса. Некоторые проблемы с глобальными переменными. – Garf365

+0

Да, первое из них - хорошее решение. благодаря –

-1

Что собирается использовать статическую для i_mouse и depthimagemouse внутри функции onMouse (вы использовать его в только 1 функция) и #define для постоянных переменных? Я думаю, что это может быть хорошим решением в вашем случае.

+1

'static' подразумевает те же проблемы, что и глобальная переменная: функция все еще не реентерабельная. Вы отвечаете только о проблемах видимости, а не о продолжительности хранения и о возврате функции. Таким образом, если вы хотите избежать глобальной переменной, не используйте статический – Garf365