Есть класс такого рода:
#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) { }
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники