Hej, mam wielką prośbę do forumowiczów o pomoc... Męczę się z tym i męczę i nie mogę sobie poradzić.
Tutaj załączam plik z projektem: <url>www.dekspert.nazwa.pl/symulacja.rar</url>
Chodzi o to, że mam klasę ListaZdarzen w którem mam kolejkę priorytetową ze wskaźnikami na obiekty klasy Zdarzenie. W klasie Zdarzenie chcę mieć wskaźnik do obiektu ListaZdarzen, albo chociaż do samej kolejki priorytetowej, żebym bezpośrednio z wnętrza klasy Zdarzenie mógł operować na kolejce...
W tej postaci co mam niestety kompilator wywala całą masę błędów, a wystarczy, że wyrzucę wskaźnik na ListaZdarzen z klasy Zdarzenie i już wszystko działa... Wydaje mi się, że to przez funktor do wstawiania w odpowiedniej kolejności... ale nie jestem pewien, nigdy wcześniej nie korzystałem z kolejek priorytetowych...
umieszczę też kod klas dla osób które nie mają Visual Studio
ListaZdarzen.h
#pragma once
#include "Zdarzenie.h"
#include "Statystyki.h"
#include <queue>
#include <functional>
using namespace std;
struct EventsCompare : binary_function<Zdarzenie*, Zdarzenie*, bool>
{
bool operator() (const Zdarzenie* ptr1, const Zdarzenie* ptr2)
{
return ptr1->czas > ptr2->czas;
}
};
class ListaZdarzen
{
public:
ListaZdarzen(void) {};
~ListaZdarzen(void);
static Statystyki* stats;//statystyki całej symulacji
priority_queue<Zdarzenie*, vector<Zdarzenie*>, EventsCompare> LiniaCzasu;
};
ListaZdarzen.cpp
#include "StdAfx.h"
#include "ListaZdarzen.h"
Statystyki* ListaZdarzen::stats = new Statystyki();//deklaracja statycznego wskaźnika na statystyki
ListaZdarzen::~ListaZdarzen(void)
{
while(!this->LiniaCzasu.empty())
{
delete this->LiniaCzasu.top();
this->LiniaCzasu.pop();
}
}
Zdarzenie.h
#pragma once
#include "Siec.h"
#include "ListaZdarzen.h"
class Zdarzenie
{
public:
Zdarzenie(double c_z): czas(c_z) {};
~Zdarzenie(void){};
double czas;
static Siec* mpk;
static ListaZdarzen* ptr;
};
Zdarzenie.cpp
#include "StdAfx.h"
#include "Zdarzenie.h"
Siec* Zdarzenie::mpk = 0;