Подскажите пожалуйста, как можно добавить объект в valarray
.
Есть valarray
valarray<Inspector> InspectorData;
Пытаюсь добавить таким способом:
InspectorData.operator+= (Inspector(chNameDep, chTown, chRegion, chStreet, iBuilding, chNameInsp, chSurnameInsp, chPatronymicInsp, chPosition, chRank, iAge));
Но получаю ошибку.
C2676 бинарный "+=": "Inspector" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору.
Подскажите пожалуйста, как добавить элемент.
Заранее благодарен за помощь.
Вы конечно можете создать обьект valarray<Inspector>
, но:
Inspector
не имеет аргументы по умолчанию:Вы должны сразу обозначить эти аргументы и количество:
valarray<Inspector> inspactorData(Inspector(arg1, arg2,...), 10);
тогда вы получаете inspactorData
с 10 обьектами Inspector(arg1, arg2,...)
, которые потом можете заменить другими.
вы можете создать обьект
valarray<Inspector> inspactorData;
но потом придется установить размер(сколько обьектов предположительно будет содержать)
inspactorData.resize(10);
inspactorData[0] = Inspector(chNameDep, chTown, chRegion, chStreet, iBuilding, chNameInsp,
chSurnameInsp, chPatronymicInsp, chPosition, chRank, iAge);
Так можете заполнять каждый элемент объекта valarray
. Все его операторы приводят к вызову операторов элементов valarray
. Так что ваши попытки добавлять с помощью оператора + приводят к тому, что вы суммируете содержащийся в последовательности все обьекты с другим обьектом, что во первых не то, что вы ожидаете, а во вторых ваш класс может не иметь определение operator+
Но valarray
оптимизирован для численных методов, для других целей использовать его просто нежелательно, а иногда даже приведет к тупику. Так что конкретно для вашего класса, лучше используйте контейнеры ( "не совсем котейнер": такую характеристику дал valarray
классу Страуструп )
Для хранения в valarray
класс должен соответствовать спецификации Numric type. Класс с названием Inspector
не очень похож на число. Более того, оператор += в данном случае служит для поэлементного сложения векторов, а не для добавления. Короче говоря используйте std::vector
, тогда добавить элемент можно так:
::std::vector<Inspector> InspectorData{};
InspectorData.emplace_back(chNameDep, chTown, chRegion, chStreet, iBuilding, chNameInsp, chSurnameInsp, chPatronymicInsp, chPosition, chRank, iAge);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть макет, на котором в навигации у элементов списка разные отступы слева друг от другаЯ задал общий класс всем элементам и через :nth-child для...
Работаю с DjangoНаписал парсер, который собирает подписчиков в инстаграме
Я понимаю зачем нужен модуль и вобще зачем нужна инкапсуляцияОднако никак не могу понять чем обусловлен его синтаксис (function(){ код })()