Witam, chcę pokazać mój problem na przykładzie, załóżmy że są 2 klasy
class Istota
class Czlowiek : public Istota;
I że w klasie bazowej czyli Istocie jest metoda która np. wyłącza widoczność modelu na mapie:
class Istota
{
bool enabled;
public:
void SetActive(bool enable)
{
enabled = enable;
}
bool IsActive()
{
return enabled;
}
}
I jeżeli teraz zrobię obiekt klasy Człowiek i zrobię wektor dla Istot oraz dla Ludzi i wyślę tam wskaźnik do właśnie utworzonego obiektu
std::vector<Istota> istoty;
std::vector<Czlowiek> ludzie;
Czlowiek()
{
istoty.push_back(*this);
ludzie.push_back(*this);
}
I teraz jeżeli jest pętla sprawdzająca aktywność danej istoty:
for(int i=0; i<istoty.size(); i++)
if(istoty[i].IsActive()) Rysuj();
i np ustawie w wektorze z ludźmi dla tego samego obiektu że jest nieaktywny to w wektorze z istotami on wciąż będzie aktywny, tak jakbym modyfikował tylko kopię danego obiektu a nie oryginał. Próbowałem robić tak:
std::vector<Istota&> istoty
std::vector<Czlowiek&> czlowiek
Ale wtedy wywala mi masę błędów typu 'pointer:" pointer to reference is illegal itp.
Pomocy!