Вопрос про конструкторы классов

230
29 апреля 2018, 21:45

Вот у меня есть класс:

class Cube
{
public:
    int x, y, size;
    Cube(int x, int y, int size) : x(x), y(y), size(size) {}
    QRectF getRect(){
        return QRectF(x, y, size, size);
    }
};

И я хочу поместить его в контейнер:

QVector<Cube> v;
v.push_back(Cube(1, 1, 1));

И получаю ошибку:

error: no matching function for call to 'Cube::Cube()'
             new (from++) T();
             ^

Чем она вызвана и как её исправить?

Answer 1

У вас не определен конструктор по умолчанию. У вас есть

Cube(int x, int y, int size) : x(x), y(y), size(size) {}

но нет такого

Cube() {}

вообще лучше записать что-то вроде:

Cube(int x = 0, int y = 0, int size = 0) : x(x), y(y), size(size) {}
READ ALSO
Определить класс объекта

Определить класс объекта

Есть ли стандартная ф-ция определения класса объекта?

239
Количество кратчайших путей

Количество кратчайших путей

Сейчас: Код ищет количество точек, через которое пройдёт алгоритм для возвращения в исходную позицию

235
Удаление элементов из очереди

Удаление элементов из очереди

Имеется часть кода:

231