本文整理汇总了C++中Constante::clone方法的典型用法代码示例。如果您正苦于以下问题:C++ Constante::clone方法的具体用法?C++ Constante::clone怎么用?C++ Constante::clone使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Constante
的用法示例。
在下文中一共展示了Constante::clone方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execute
void CommandeSqr::execute()throw(LogMessage){
savePileAvtExe();
Constante * c;
try{
c =_pileCourante->depiler();
if(typeid(*c)!=typeid(Complexe) && typeid(*c)!=typeid(Expression)){
//clone la constante pour pas la modifier et empiler la rempiler la mauvaise version s'il y a un problème
Constante* clone = c->clone();
Nombre * nbClone = dynamic_cast<Nombre*>(clone);
nbClone->sqr_();
if(empilerNombre(nbClone))
savePileApresExe();
else
_pileCourante->empilerConstante(c);
}
else if(typeid(*c)==typeid(Complexe)){
Constante* clone = c->clone();
Complexe* coClone = dynamic_cast<Complexe*>(clone);
coClone->sqr();
if(empilerComplexe(coClone))
savePileApresExe();
else
_pileCourante->empilerConstante(c);
}
else{
_pileCourante->empilerConstante(c);
throw LogMessage("Impossible de faire un carré sur une Expression, Il faut d'abord l'évaluer",1);
}
}
catch(LogMessage &msg){
throw;
}
}
示例2: execute
void CommandeLn::execute()throw(LogMessage){
savePileAvtExe();
Constante * c;
try{
c=_pileCourante->depiler();
if(typeid(*c)!=typeid(Complexe) && typeid(*c)!=typeid(Expression)){
//clone la constante pour pas la modifier et empiler la rempiler la mauvaise version s'il y a un problème
Constante* clone = c->clone();
Nombre * n = dynamic_cast<Nombre*>(clone);
n->ln_();
if(empilerNombre(n))
savePileApresExe();
else
_pileCourante->empilerConstante(c);
}
else{
_pileCourante->empilerConstante(c);
throw LogMessage("Impossible de faire un logarithme neperien sur un Complexe ou une Expression",1);
}
}
catch(LogMessage &msg){
throw;
}
}
示例3: Execution
void OperateurPile::Execution()
{
if (operation=="SWAP")
{
Constante * c1;
Constante * c2;
c1=Historique::GetInstance()->GetPileCalcul().Depiler();
c2=Historique::GetInstance()->GetPileCalcul().Depiler();
this->SWAP(c1, c2);
QString opG=c1->ToQString();
QString opD=c2->ToQString();
LogSystem::GetInstance()->Publier(LogMessage("Echange de l'élément "+opG+" avec "+opD,2));
delete c1;
delete c2;
}
if (operation=="SUM")
{
Constante * c1=Historique::GetInstance()->GetPileCalcul().Depiler();
Historique::GetInstance()->GetPileCalcul().Empiler(this->SUM(c1));
QString opG=c1->ToQString();
LogSystem::GetInstance()->Publier(LogMessage("Somme des "+opG+" premiers éléments",2));
delete c1;
}
if (operation=="MEAN")
{
Entier * c1 = dynamic_cast<Entier *>(Historique::GetInstance()->GetPileCalcul().Depiler());
if (c1==NULL)
{
throw Exception("Erreur : Impossible de faire la moyenne d'un nombre non entier d'éléments.");
}
else
{
Constante * temp = this->SUM(c1);
Historique::GetInstance()->GetPileCalcul().Empiler(temp->operator/(c1));
delete temp;
QString opG=c1->ToQString();
LogSystem::GetInstance()->Publier(LogMessage("Moyenne des"+opG+" premiers éléments",2));
delete c1;
}
}
if (operation=="CLEAR")
{
/* Il faut penser à liberer la memoire quand on vide la pile*/
PileCalcul& p=Historique::GetInstance()->GetPileCalcul();
p.Vider();
LogSystem::GetInstance()->Publier(LogMessage("La pile est vidée",2));
}
if (operation=="DUP")
{
Constante * temp = Historique::GetInstance()->GetPileCalcul().Depiler();
Constante * cpy = temp->clone();
Constante * cpy2 = temp->clone();
delete temp;
Historique::GetInstance()->GetPileCalcul().Empiler(cpy2);
Historique::GetInstance()->GetPileCalcul().Empiler(cpy);
LogSystem::GetInstance()->Publier(LogMessage("Dédoublement du premier élément de la Pile",2));
}
if (operation=="DROP")
{
delete Historique::GetInstance()->GetPileCalcul().Depiler();
LogSystem::GetInstance()->Publier(LogMessage("Le premier élément de la pile a été effacé",2));
}
}