Bardzo prosze o pomoc bo juz drugi dzien walcze z tym problemem. Napisalem krotki program - zaimplementowalem klase realizujaca wzorzec singletona i sprawdzalem rozne rzeczy potrzebne mi do duzego projektu. Pokrotce - singleton dziala dobrze; potrzebowalem w nim vectora wiec go utworzylem i dotad bylo wszystko ok. Problem pojawil sie w momencie gdy zaczalem tworzyc poszczegolne elementy tego vectora w jakiejs funkcji singletona. Pokazuja sie dziwne dla mnie bledy - przede wszystkim kompilator czepia sie konstruktorow i destruktora singletona; kiedy oba konstruktory i destruktor wezme w komentarz to bledow nie ma... Jak rozwiazac ten problem? Taka postac programu by mnie zadowalala a tu lipa. Jeszcze raz prosze Was o pomoc. Oto felerne zrodlo programu:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class samochod;
class Singleton
{
private:
int liczba;
static Singleton *pojedynczy;
vector <samochod> wczytane_samochody;
Singleton(){}
Singleton(const Singleton& s){}
public:
static Singleton* pobierzInstancje();
void metoda();
void metoda_2();
void wczytaj_samochody();
~Singleton()
{
cout<<"Usuwanie obiektu klasy Singleton."<<endl;
pojedynczy=NULL;
}
};
//******************************************************************************
class samochod
{
private:
double predkosc;
double pojemnosc;
string marka;
public:
friend void Singleton::wczytaj_samochody();
};
//******************************************************************************
Singleton* Singleton::pojedynczy = NULL;
//******************************************************************************
Singleton* Singleton::pobierzInstancje()
{
if(pojedynczy == NULL)
{
pojedynczy = new Singleton;
cout<<"Utworzono obiekt klasy Singleton."<<endl;
return pojedynczy;
}
else
{
cout<<"Juz istnieje obiekt klasy singleton"<<endl;
}
return pojedynczy;
}
//******************************************************************************
void Singleton::metoda()
{
cout << "Metoda klasy singleton" << endl;
liczba=5;
}
//******************************************************************************
void Singleton::metoda_2()
{
cout<<"Liczba wynosi: "<<liczba<<endl;
}
//******************************************************************************
void Singleton::wczytaj_samochody()
{
samochod pojazd;
for (int i=0; i<5; i++)
{
pojazd.predkosc=3;
pojazd.pojemnosc=30;
pojazd.marka="maluch";
wczytane_samochody.push_back(pojazd);
}
}
//******************************************************************************
int main()
{
Singleton *sc1;
sc1 = Singleton::pobierzInstancje();
sc1->metoda();
sc1->metoda_2();
delete sc1;
sc1->metoda_2();
system("PAUSE");
return 0;
}
Pozdrawiam