Стиль инициализатора ()
в скобках не разрешен синтаксисом для члена в определении класса. (Я не совсем уверен, почему.) Единственными допустимыми формами инициализатора для членов в определении класса являются {}
фигурный инициализатор-список или инициализатор, который начинается с =
.
И это мешает вам, так как:
std::vector<int> m_ray_fbos{5};
или
std::vector<int> m_ray_fbos = {5};
вызовите неправильный vector
конструктор и не дайте желаемых результатов. И
std::vector<int> m_ray_fbos = 5;
не будет работать, потому что вам нужен конструктор explicit
, а символ =
инициализирует эту копию, поэтому конструкторы explicit
не рассматриваются.
Самый простой ответ, вероятно,
std::vector<int> m_ray_fbos = std::vector<int>(5);
Возможно, вы также можете сделать что-то вроде
std::vector<int> m_ray_fbos = vec_of_size(5);
если у вас было достаточно других причин, чтобы написать или использовать функцию класса vec_of_size
или свободную функцию.