singletonovi su ustvari hijerarhijski povezani, svaka klasa je c(in (rank), i svaki c(in ima c(lan koji pokazuje sledec'i c(in.(c(inovi su kao u nekoj singleton listikada )
kada je ispunjen uslov za napredovanje trebalo bi da se poyove f'ja promote koja ce promeniti c(in.
problemi su nastali prilikom implementacije i stvarno nemam blage veze sta je
Pomognite ako boga znate!!!
source:
Code:
class Rank{
protected:
Rank* superiorRank_;
int popust_;
int minLicKupovina_;
int minGrupKupovina_;
public:
Rank(int, int, int);
virtual Rank* getInstance()=0; //ovo je red 13
virtual bool isForPromotion(int, int)=0;
friend void promoteMember(Rank*);
};
class Direktor : public Rank{ //ovo je red 18
private:
static Direktor* istance;
protected:
Direktor(int, int, int);
public:
static Rank* getInstance();
bool isForPromotion(int a, int b){return false;}
};
Rank::Rank(int popust, int minLicKupovina, int minGrupKupovina){
popust_ = popust;
minLicKupovina_ = minLicKupovina;
minGrupKupovina_ = minGrupKupovina;
}
Direktor* Direktor::istance = 0;
Direktor::Direktor(int popust, int minLicKupovina, int minGrupnaKupovina) : Rank(popust, minLicKupovina, minGrupnaKupovina){
}
Rank* Direktor::getInstance(){
if(istance == 0)
istance = new Direktor();// ovo je red 50
return istance;
}
class Rank{
protected:
Rank* superiorRank_;
int popust_;
int minLicKupovina_;
int minGrupKupovina_;
public:
Rank(int, int, int);
virtual Rank* getInstance()=0; //ovo je red 13
virtual bool isForPromotion(int, int)=0;
friend void promoteMember(Rank*);
};
class Direktor : public Rank{ //ovo je red 18
private:
static Direktor* istance;
protected:
Direktor(int, int, int);
public:
static Rank* getInstance();
bool isForPromotion(int a, int b){return false;}
};
Rank::Rank(int popust, int minLicKupovina, int minGrupKupovina){
popust_ = popust;
minLicKupovina_ = minLicKupovina;
minGrupKupovina_ = minGrupKupovina;
}
Direktor* Direktor::istance = 0;
Direktor::Direktor(int popust, int minLicKupovina, int minGrupnaKupovina) : Rank(popust, minLicKupovina, minGrupnaKupovina){
}
Rank* Direktor::getInstance(){
if(istance == 0)
istance = new Direktor();// ovo je red 50
return istance;
}
evo sta kaze kompajler:
--------------------Configuration: proba - Win32 Debug--------------------
Compiling...
rank.cpp
c:\podaci\infosi128\dimi\proba\rank.cpp(50) : error C2259: 'Direktor' : cannot instantiate abstract class due to following members:
c:\podaci\infosi128\dimi\proba\rank.cpp(18) : see declaration of 'Direktor'
c:\podaci\infosi128\dimi\proba\rank.cpp(50) : warning C4259: 'class Rank *__thiscall Rank::getIstance(void)' : pure virtual function was not defined
c:\podaci\infosi128\dimi\proba\rank.cpp(13) : see declaration of 'getIstance'
c:\podaci\infosi128\dimi\proba\rank.cpp(50) : error C2512: 'Direktor' : no appropriate default constructor available
Error executing cl.exe.
rank.obj - 2 error(s), 1 warning(s)
7even respect