Qt. Проблемы с QVector<MyClass>

237
30 марта 2017, 22:00

Есть класс такого рода:

#ifndef SOME_H
#define SOME_H
#include <QPoint>
#include <QColor>
class Some
{
public:
        QPoint point;
        QColor color;
public:
        Some(QColor c, QPoint p) : color(c), point(p) { }
};
#endif // SOME_H

При создании вектора и добавлении объектов этого класса - выдает ошибку.

QVector<Some> s;
s.push_back(Some(QColor(Qt::red), QPoint(0, 0)));

Ошибка:

no matching function for call to ‘Some::Some()’ new (from++) T(); ^

Как это исправить?

Answer 1

В документации сказано, что:

The values stored in the various containers can be of any assignable data type. To qualify, a type must provide a default constructor, a copy constructor, and an assignment operator.

В вашем классе нет конструктора по умолчанию, соответственно его нельзя использовать в Qt-контейнерах. Можно добавить аргументы по умолчанию в текущий конструктор, это тоже решит проблему:

Some(QColor c = QColor(Qt::red), QPoint p = QPoint(0, 0)) : color(c), point(p) { }
READ ALSO
Найти номер первой из строк, не содержащих ни одного положительного элемента [требует правки]

Найти номер первой из строк, не содержащих ни одного положительного элемента [требует правки]

Есть матрица M x N, нужно найти номер первой из строк, не содержащих ни одного положительного элементаСпасибо! Застрял

256
Нужна программа для считывания данных с внешнего сайта [требует правки]

Нужна программа для считывания данных с внешнего сайта [требует правки]

Нужна программа для считывания данных с внешнего сайта с временным обновлением и звуковым оповещением

197
Не работает рандом

Не работает рандом

Создал переменную, сделал её рандомной, выдаёт всегда 5, сколько бы ты не писал startПодскажите пожалуйста, где проблема?

274
Не собирается yandex phantom

Не собирается yandex phantom

Скачал исходники веб-сервера phantom для яндекстанка

239