Есть класс такого рода:
#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(); ^
Как это исправить?
В документации сказано, что:
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) { }
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть матрица M x N, нужно найти номер первой из строк, не содержащих ни одного положительного элементаСпасибо! Застрял
Нужна программа для считывания данных с внешнего сайта с временным обновлением и звуковым оповещением
Создал переменную, сделал её рандомной, выдаёт всегда 5, сколько бы ты не писал startПодскажите пожалуйста, где проблема?