Почему вылетает ошибка: C:\DEVELOPMENT\Qt5.12.9\5.12.9\mingw73_64\include\QtCore\qvector.h:687: ошибка: cannot bind non-const lvalue reference of type 'AltIdent&' to an rvalue of type 'std::remove_ref
Всем доброго времени суток.
Помогите разобраться, что я делаю не так?
Есть несколько классов. Вот они:
- class AltIdent
- {
- public:
- AltIdent();
- AltIdent(const AltIdent &);
- AltIdent(PartNumber partnumber, ManufacturerCode manufacturercode);
- ~AltIdent(){}
- PartNumber getPartNumberObject() const;
- void setPartNumberObject(const PartNumber &value);
- ManufacturerCode getManufacturerCodeObject() const;
- void setManufacturerCodeObject(const ManufacturerCode &value);
- bool isEmpty();
- AltIdent *isNull();
- AltIdent operator= (AltIdent &altident);
- private:
- PartNumber partNumberObject;
- ManufacturerCode manufacturerCodeObject;
- };
- #include "altident.h"
- AltIdent::AltIdent()
- {
- }
- AltIdent::AltIdent(const AltIdent &altident)
- {
- partNumberObject = altident.getPartNumberObject();
- manufacturerCodeObject = altident.getManufacturerCodeObject();
- }
- AltIdent::AltIdent(PartNumber partnumnber, ManufacturerCode manufacturercode):
- partNumberObject(partnumnber), manufacturerCodeObject(manufacturercode)
- {
- }
- PartNumber AltIdent::getPartNumberObject() const
- {
- return partNumberObject;
- }
- void AltIdent::setPartNumberObject(const PartNumber &value)
- {
- partNumberObject = value;
- }
- ManufacturerCode AltIdent::getManufacturerCodeObject() const
- {
- return manufacturerCodeObject;
- }
- void AltIdent::setManufacturerCodeObject(const ManufacturerCode &value)
- {
- manufacturerCodeObject = value;
- }
- bool AltIdent::isEmpty()
- {
- if(isNull() != nullptr){
- if(!getPartNumberObject().isEmpty()){
- return false;
- }
- if(!getManufacturerCodeObject().isEmpty()){
- return false;
- }
- }
- return true;
- }
- AltIdent *AltIdent::isNull()
- {
- AltIdent *altIdent = this;
- if(altIdent != nullptr){
- return this;
- }
- return nullptr;
- }
- AltIdent AltIdent::operator=(AltIdent &altident)
- {
- return *new AltIdent(altident.getPartNumberObject(), altident.getManufacturerCodeObject());
- }
- class PartNumber
- {
- public:
- PartNumber();
- PartNumber(const PartNumber &);
- PartNumber(const QString &partNumberStr, const QMap<QString, QString> &attrMap);
- ~PartNumber(){}
- QString getPartNumberValue() const;
- void setPartNumberValue(const QString &value);
- QMap<QString, QString> getPartNumberAttrMap() const;
- void setPartNumberAttrMap(const QMap<QString, QString> &value);
- bool isEmpty();
- PartNumber *isNull();
- private:
- QString partNumberValue;
- QMap<QString, QString> partNumberAttrMap;
- };
- #include "partnumber.h"
- PartNumber::PartNumber()
- {
- }
- PartNumber::PartNumber(const PartNumber &partnumber)
- {
- partNumberValue = partnumber.getPartNumberValue();
- partNumberAttrMap = partnumber.getPartNumberAttrMap();
- }
- PartNumber::PartNumber(const QString &partNumberStr, const QMap<QString, QString> &attrMap) :
- partNumberValue(partNumberStr), partNumberAttrMap(attrMap)
- {
- }
- QMap<QString, QString> PartNumber::getPartNumberAttrMap() const
- {
- return partNumberAttrMap;
- }
- void PartNumber::setPartNumberAttrMap(const QMap<QString, QString> &value)
- {
- partNumberAttrMap = value;
- }
- QString PartNumber::getPartNumberValue() const
- {
- return partNumberValue;
- }
- void PartNumber::setPartNumberValue(const QString &value)
- {
- partNumberValue = value;
- }
- bool PartNumber::isEmpty()
- {
- if(isNull() != nullptr && !partNumberValue.isEmpty()){
- return false;
- }
- return true;
- }
- PartNumber *PartNumber::isNull()
- {
- PartNumber *partNumber = this;
- if(partNumber != nullptr){
- return this;
- }
- return nullptr;
- }
- class ManufacturerCode
- {
- public:
- ManufacturerCode();
- ManufacturerCode(const ManufacturerCode &);
- ManufacturerCode(const QString &manufacturerCode, const QMap<QString, QString> &attrMap);
- ~ManufacturerCode(){}
- QMap<QString, QString> getManufacturerCodeAttrMap() const;
- void setManufacturerCodeAttrMap(const QMap<QString, QString> &value);
- QString getManufacturerCodeValue() const;
- void setManufacturerCodeValue(const QString &value);
- QDomElement manufacturerCodeToXml(QDomDocument &domdocument);
- void manufacturerCodeFromXml(QDomElement &domelement);
- bool isEmpty();
- ManufacturerCode *isNull();
- private:
- QString manufacturerCodeValue;
- QMap<QString, QString> manufacturerCodeAttrMap;
- };
- #include "manufacturercode.h"
- ManufacturerCode::ManufacturerCode()
- {
- }
- ManufacturerCode::ManufacturerCode(const ManufacturerCode &manufacturercode)
- {
- *this = manufacturercode;
- }
- ManufacturerCode::ManufacturerCode(const QString &manufacturerCode,const QMap<QString, QString> &attrMap) :
- manufacturerCodeValue(manufacturerCode), manufacturerCodeAttrMap(attrMap)
- {
- }
- QMap<QString, QString> ManufacturerCode::getManufacturerCodeAttrMap() const
- {
- return manufacturerCodeAttrMap;
- }
- void ManufacturerCode::setManufacturerCodeAttrMap(const QMap<QString, QString> &value)
- {
- manufacturerCodeAttrMap = value;
- }
- QString ManufacturerCode::getManufacturerCodeValue() const
- {
- return manufacturerCodeValue;
- }
- void ManufacturerCode::setManufacturerCodeValue(const QString &value)
- {
- manufacturerCodeValue = value;
- }
- bool ManufacturerCode::isEmpty()
- {
- if(isNull() != nullptr && !manufacturerCodeValue.isEmpty()){
- return false;
- }
- return true;
- }
- ManufacturerCode *ManufacturerCode::isNull()
- {
- ManufacturerCode *manufacturerCode = this;
- if(manufacturerCode != nullptr){
- return this;
- }
- return nullptr;
- }
В другом файле сосздаю вектор:
- AltIdent m_altIdentOrigin;
- AltIdent m_altIdentCurrent;
- QVector<AltIdent> m_altIdentList;
На кнопку QPushButton повесил обработчик, который должен по индексу присвоить переменной m_altIdentCurrent элемент массива
- void AltIdentGroupWidget::previewItem(const int &index)
- {
- m_altIdentOrigin = m_altIdentList.at(index);
- }
Но при компиляции получаю следующие ошибки:
1. C:\DEVELOPMENT\Qt5.12.9\5.12.9\mingw73_64\include\QtCore\qvector.h:687: ошибка: cannot bind non-const lvalue reference of type 'AltIdent&' to an rvalue of type 'std::remove_reference
d->end() = qMove(copy);
2. C:\DEVELOPMENT\Qt5.12.9\5.12.9\mingw73_64\include\QtCore\qvector.h:693: ошибка: binding reference of type 'AltIdent&' to 'const AltIdent' discards qualifiers
d->end() = t;
~~~~~~~~~~^~~
И я не могу разобраться, что я делаю не так?
Помогите разобраться, пожалуйста.
Do you like it? Share on social networks!
- Last comments
- AKApril 1, 2025, 11:41 a.m.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPMarch 9, 2025, 4:14 p.m.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМNov. 22, 2024, 9:51 p.m.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Now discuss on the forum
- МАApril 1, 2025, 4:21 p.m.0ff763fe-4e50-455d-a3a6-5699c243b1a5_17_44_22_1.xml
- fFeb. 15, 2025, 1:46 p.m.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Еще у меня вопрос. Правильно ли я написал конструктор копирования и перегрузил операцию присваивания?