Witam, chciałem napisać program zapamiętujący Wielkąty które rysuje w klasie Wielokąt poprzez trzymanie ich krawędzi w vectorze krawedzie z elementami typu klasa Krawedz... Kod wygląda tak:
class Krawedz{
public:
int x1, x2;
int y1, y2;
Krawedz(int a1, int a2, int b1, int b2){
x1 = a1;
x2 = a2;
y1 = b1;
y2 = b2;
}
};
class Wielokat{
public:
QVector <Krawedz> krawedzie;
void dodaj(QVector <Krawedz> x){
for(int i = 0; i < x.size(); i++)
krawedzie.push_back(x[i]);
}
void usun(){
krawedzie.pop_back();
}
};
QVector <Krawedz> krawedzie;
QVector <Wielokat> tab1;
Dodawanie krawędzi wygląda następująco, są oczywiście przypadki rozpatrzone kiedy wierzochołek jest pierwszy, kiedy ostatni itd, ale ogólnie dodanie każdej krawędzi do wielokąta wygląda tak:
Krawedz nowa(krawedzie[krawedzie.size()-1].x2, krawedzie[krawedzie.size()-1].y2, x, y);
rysujOdc(krawedzie[krawedzie.size()-1].x2, krawedzie[krawedzie.size()-1].y2, x, y);
No i po skończeniu rysowania wielokąta jest jeszcze takie wywołanie:
tab1[licznik_w].dodaj(krawedzie);
I problem pojawia się przy kompilacji programu 3 razy (bo tyle jest przypadków dodania krawedzi z tymi wierzchołkami w funkcji).
D:\Qt\5.12.0\mingw73_64\include\QtCore\qvector.h:607: błąd: no matching function for call to 'Krawedz::Krawedz()'
new (dst++) T();
^~~~~~~~~~~~~~~
I szczerze mówiąc nie wiem o co może chodzić....