• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Qt, udostępnianie obiektu typu QStringList - błąd konstruktora kopiującego.

VPS Starter Arubacloud
0 głosów
143 wizyt
pytanie zadane 24 maja 2017 w C i C++ przez Caspariano Użytkownik (760 p.)

1.Mam pewną zagwozdkę otóż, mam pewną klasę "Group", w klasie tej znajduję się publicznie zadeklarowany obiekt typu "QStringList".
2.W Klasie MainWindow posiadam obiekt typu QVector <Group>.
3.W funkcji należącej do MainWindow chcę odwołać się do składowej Group - QStringList.

I w tym momencie pojawia się błąd

 

D:\Qt\Qt5.8.0\5.8\msvc2015_64\include\QtCore\qvector.h:559: error: C2280: 'Group::Group(const Group &)': attempting to reference a deleted function

 

Rozumiem że chodzi o konstruktor kopiujący, ale nie rozumiem dlaczego kompilator próbuje cokolwiek kopiować, kiedy jedynie odwołuje się do parametrów zwracanych przez funkcję. Próbowałem przesłać obiekt za pomocą referencji i błąd pojawia się również wtedy.

 

//Group.h
#ifndef GROUP_H
#define GROUP_H
#include <QStringList>
#include <QVector>
#include <QApplication>
#include "employee.h"
#include <QObject>


class Group : public QObject
{
    Q_OBJECT
public:
    explicit Group(QObject* partent =0);
    ~Group();


    QStringList employeesList;
    QStringList* get_employees_list(){return &employeesList;}

    
    
private:
    

public slots:
    void refreshEmployeeList();


};

#endif // GROUP_H

 

 

//MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

//QClasses
#include <QMainWindow>
#include <QListWidgetItem>
#include <QVector>
#include <QStringList>

//DIALOGS
#include "newemployee.h"
#include "newgroupdialog.h"

//MY CLASSES
#include "group.h"
#include "employee.h"



namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    QVector <Employee> AllEmployeeList;
    QVector <Employee> AvaliableEmployeeList;
    QVector <Group> GroupsList;

    void refresh_lists();



public slots:
    void NewEmployeeCreated(Employee emp);



private slots:

    void on_pushButton1_clicked();

    void on_pushButton2_clicked();

    void on_pushButton3_clicked();

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_5_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

 

Funkcja w której występuje błąd

void MainWindow::refresh_lists()
{

     for (int j = 0; j < GroupsList.size(); j++)
     {
         GroupsList[j].getEmployeeList();         //    w tej linijce kompilator wyrzuca error
     }



}

 

PS. Kod nie ma z grubsza sensu bo go przerobiłem dla klarowności.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 444 wizyt
pytanie zadane 22 grudnia 2019 w C i C++ przez Jacuchna0 Użytkownik (640 p.)

92,960 zapytań

141,922 odpowiedzi

321,156 komentarzy

62,295 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...