Лучшая практика, чтобы запретить конструктору списка инициализаторов иметь приоритет [дубликат] ⇐ C++
-
Гость
Лучшая практика, чтобы запретить конструктору списка инициализаторов иметь приоритет [дубликат]
По совету @SamVarshavchik я создал минимальный воспроизводимый пример:
class Vector { частный: size_t размер; двойной* элемент; публика: Vector(size_t s): sz{s}, elem{new double} {} Vector(std::initializer_list lst): sz{lst.size()}, elem{new double[lst.size()]} { std::copy(lst.begin(), lst.end(), elem); } size_t size() const {return sz;} двойной& оператор[](size_t i) { если (я < 0 || я >= sz) throw std::out_of_range("Vector::operator[](size_t): индекс вне диапазона"); вернуть элемент [я]; } }; интервал основной() { Вектор v1{3}; Вектор v2{v1.size()}; std::cout
По совету @SamVarshavchik я создал минимальный воспроизводимый пример:
class Vector { частный: size_t размер; двойной* элемент; публика: Vector(size_t s): sz{s}, elem{new double} {} Vector(std::initializer_list lst): sz{lst.size()}, elem{new double[lst.size()]} { std::copy(lst.begin(), lst.end(), elem); } size_t size() const {return sz;} двойной& оператор[](size_t i) { если (я < 0 || я >= sz) throw std::out_of_range("Vector::operator[](size_t): индекс вне диапазона"); вернуть элемент [я]; } }; интервал основной() { Вектор v1{3}; Вектор v2{v1.size()}; std::cout
Мобильная версия