Название: Почему в С++ нельзя инициализировать статические переменные прямо в классе?... Отправлено: yarick от Апрель 30, 2013, 08:25 Очень неудобно инициализировать статические переменные вне класса, особенно в h-файле.
Почему нельзя просто написать Код: class MyClass Может быть есть какие-нибудь извращения/обходные пути? Или всё-таки смириться? И раз уж на то пошло - давно хотел задать вопрос - а есть ли какие-нибудь "прекомпиляторы" для С++? Подобно qmake, которые добавляют новый синтаксис\элементы и переводят это в стандартный язык, типа ещё одна прослойка дополнительная? Название: Re: Почему в С++ нельзя инициализировать статические переменные прямо в классе?... Отправлено: Пантер от Апрель 30, 2013, 08:30 Не пользуйся статическими переменными и не будет тебе проблем. ;)
Название: Re: Почему в С++ нельзя инициализировать статические переменные прямо в классе?... Отправлено: yarick от Апрель 30, 2013, 08:58 Спасибо за совет :D
Название: Re: Почему в С++ нельзя инициализировать статические переменные прямо в классе?... Отправлено: navrocky от Апрель 30, 2013, 09:47 Спасибо за совет :D Вообще-то он прав, статические переменные в основном используются для синглтонов, использование которых тоже, по возможности, надо избегать. Поэтому, не так уж и сложно инициализировать переменную отдельно ( int MyClass::staticField = 10; ) Название: Re: Почему в С++ нельзя инициализировать статические переменные прямо в классе?... Отправлено: Igors от Апрель 30, 2013, 10:25 Очень неудобно инициализировать статические переменные вне класса, особенно в h-файле. Что неудобно? Напр захотели изменить начальное значение переменной. Если она в cpp - перекомпилируется один файл, а если бы в хедере - может и сотни файлов. Почему нельзя просто написать Код: class MyClass Может быть есть какие-нибудь извращения/обходные пути? Или всё-таки смириться? Вообще откуда такое горячее желание найти/применить нечто "особенное", "изысканное"? :) Чем проще текст - тем лучше, это показатель класса. А "наворотить" много ума не надо Название: Re: Почему в С++ нельзя инициализировать статические переменные прямо в классе?... Отправлено: nono от Апрель 30, 2013, 20:28 Используй перечисления
class myclass { enum {ONE = 10, TWO = 20}; } ... myclass::TWO; Название: Re: Почему в С++ нельзя инициализировать статические переменные прямо в классе?... Отправлено: m_ax от Апрель 30, 2013, 21:11 Используй перечисления class myclass { enum {ONE = 10, TWO = 20}; } ... myclass::TWO; Перечисления здесь не помогут. Речь идёт не о статических константах.. Название: Re: Почему в С++ нельзя инициализировать статические переменные прямо в классе?... Отправлено: Syveren от Май 02, 2013, 09:17 Меня это тоже напрягает) Намного удобней ИМХО иметь возможность инициировать переменную там же, где объявил (как в джаве).
Может для обратной совместимости такую возможность не добавляют или по какой другой причине? Название: Re: Почему в С++ нельзя инициализировать статические переменные прямо в классе?... Отправлено: alex312 от Май 02, 2013, 09:31 http://ru.wikipedia.org/wiki/%D0%95%D0%B4%D0%B8%D0%BD%D0%B8%D1%86%D0%B0_%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D0%B8
http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE_%D0%BE%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F http://www.ozon.ru/context/detail/id/2576269/ |