@PopNik

Ошибка: no matching constructor for initialization, что делать?

Есть класс TemplateRequirement, в другом классе, ReqTGroup, имеется вектор элементами которого являются экземпляры TemplateRequirement.
Когда запускаю, выдает такую ошибку:

/Users/Mac/Qt/5.6/clang_64/lib/QtCore.framework/Headers/qvector.h:631: ошибка: no matching constructor for initialization of 'TemplateRequirement'
T copy(t);
^ ~

Как я понимаю проблема заключается как раз в создании вектора, элементами которого является мой класс, но как это исправить не могу придумать.

Класс TemplateRequirement:
class TemplateRequirement
{

public:
    TemplateRequirement();

    TemplateRequirement(TemplateRequirement &);

    TemplateRequirement(QString&,QString&, QString&);


    TemplateRequirement& operator=(TemplateRequirement&);

    QString getReq();

    QString getType();

    QString getHead();

    void save(std::ofstream &);

    void read(std::ifstream &);

    void setRequirement(QString&);


protected:
    QString head;

    QString requirement;

    QString type;

};


Класс ReqTGroup:

class ReqTGroup
{

public:
    ReqTGroup();

    ReqTGroup (int);


    void save();
    void read();

    int findByHead(QString&);

    void addItrm(QString, QString, QString);

protected:
   QVector<TemplateRequirement> requirements;

};
  • Вопрос задан
  • 5418 просмотров
Решения вопроса 1
Неправильно объявлен конструктор копирования и оператор присваивания:
TemplateRequirement(TemplateRequirement &);
TemplateRequirement& operator=(TemplateRequirement&);

Надо так:
TemplateRequirement(const TemplateRequirement &);
TemplateRequirement& operator=(const TemplateRequirement&);

Ещё советую заменить параметры типа QString и QString& на const QString&.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Возможно, в конструкторе копирования потерялся const.
TemplateRequirement(const TemplateRequirement &);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы