Мое понимание заключается в том, что C ++ позволяет определять константные члены в классе, если он является целым типом.
Вы вроде как правильно. Вы можете инициализировать статические константные интегралы в объявлении класса, но это не определение.
Интересно, если я прокомментирую вызов std :: min, компиляция кода и ссылки просто отлично (даже если для теста :: N также упоминается предыдущая строка). Любая идея о том, что происходит?
std :: min принимает свои параметры по ссылке const. Если это взяло их по стоимости, у вас не было бы этой проблемы, но поскольку вам нужна ссылка, вам также потребуется определение.
Вот глава / стих:
9.4.2 / 4 . Если член данных static
имеет тип интеграла const
или const
, его объявление в определении класса может указывать константный инициализатор, который должен быть интегральным постоянным выражением (5.19). В этом случае член может фигурировать в интегральных постоянных выражениях. Член все еще должен быть определен в области пространства имен, если он используется в программе, и определение области пространства имен не должно содержать инициализатор.
См. Ответ Чу для возможного обходного пути.
Повторяющиеся ошибки идентификатора компонента могут возникать, когда:
NamingContainer
. < f: subview >
. NamingContainer
. Здесь NamingContainer
является среди прочих < h: form >
, < h: dataTable >
и < f: subview >
.
При использовании привязки
необходимо связать ее со свойством, которое используется исключительно рассматриваемым компонентом на основе запроса. Ваш конкретный случай указывает на то, что эта привязка совместно используется несколькими компонентами, возможно, различными запросами. Когда компонент связывается со свойством компонента-основы, то компонент-основа не должен находиться в более широкой области, чем область запроса. См. также JSF 2,0 specification глава 3,1,5 (акцент мой):
3,1,5 Компоненты привязки
...
Привязки компонентов часто используются совместно с JavaBeans, которые динамически создаются с помощью средства создания управляемых компонентов (см. раздел 5.8.1 «VariiveResolver and the Default VariureResolver»). Настоятельно рекомендуется, чтобы разработчики приложений размещали управляемые бобы, на которые указывают выражения привязки компонентов, в области «запрос». Это связано с тем, что размещение его в области сеанса или приложения потребует безопасности потока, поскольку экземпляры UIComponent зависят от выполнения внутри одного потока. При размещении привязки компонента в «сеансовой» области также могут иметь место негативные последствия для управления памятью.