A spoko o tym pair zapomniałem. To jeszcze ostatnie pytanie: co oznacza ten błąd
main.cpp: In member function ‘bool XComparator::operator()(const Wierzcholek*, const Wierzcholek*)’:
main.cpp:27:15: error: invalid use of incomplete type ‘const struct Wierzcholek’
main.cpp:13:7: error: forward declaration of ‘const struct Wierzcholek’
main.cpp:27:34: error: invalid use of incomplete type ‘const struct Wierzcholek’
main.cpp:13:7: error: forward declaration of ‘const struct Wierzcholek’
//klasa XComparator
class XComparator {
public:
bool operator()(const Wierzcholek *x1, const Wierzcholek *x2) {
return (x1->odleglosc_AB > x2->odleglosc_AB);
}
};
//metoda w innej klasie
void odleglosc_AB(Wierzcholek * A, Wierzcholek * B)
{
priority_queue<Wierzcholek*, vector<Wierzcholek*>, XComparator> odleglosci_kolejka;
vector <Wierzcholek*> nieprzebadane = this->tablica_wierzcholkow;
vector <Wierzcholek*> sasiedzi;
Wierzcholek * aktualny = A;
Wierzcholek * koncowy = B;
long INF = (long)pow(2.0, (8 * sizeof(long int) - 1));
int sciezka;
for(int i=0; i<nieprzebadane.size(); i++)
{
if(nieprzebadane[i] == aktualny)
{
nieprzebadane[i]->odleglosc_AB = 0;
odleglosci_kolejka.push(nieprzebadane[i]);
}
else
{
nieprzebadane[i]->odleglosc_AB = INF;
odleglosci_kolejka.push(nieprzebadane[i]);
}
}
while(nieprzebadane.size() > 0 && aktualny != NULL)
{
nieprzebadane.erase(nieprzebadane.begin()+znajdz_pozycje(nieprzebadane, aktualny));
sasiedzi = this->pobierz_sasiadow(aktualny);
for(int i=0; i<sasiedzi.size(); i++)
{
sciezka = aktualny->odleglosc_AB + this->pobierz_dlugosc_krawedzi(aktualny, sasiedzi[i]);
if(sciezka < aktualny->odleglosc_AB)
aktualny->odleglosc_AB = sciezka;
}
if(nieprzebadane.size() > 0)
aktualny = odleglosci_kolejka.top();
}
cout<<koncowy->identyfikator<<endl;
this->odleglosc = aktualny->odleglosc_AB;
}