const
члены могут быть инициализированы только в списке инициализации членов конструкторов.Чтобы проверить входные данные вызывающей стороны, вам необходимо вызвать вспомогательную функцию для проверки каждого входного значения перед передачей его соответствующему члену, например:
int check(const std::vector<int> ¶ms, int index) {
if (params.size() <= index) throw std::length_error("");
return params[index];
}
class A {
A(const std::vector<int>& params):
x(check(params, 0)), y(check(params, 1)), z(check(params, 3)) {}
private:
const int x;
const int y;
const int z;
};
Или просто использовать vector
's вместо встроенной проверки границ :
class A {
A(const std::vector<int>& params):
x(params.at(0)), y(params.at(1)), z(params.at(3)) {}
private:
const int x;
const int y;
const int z;
};