当前位置: 首页>>代码示例>>C++>>正文


C++ Constante::clone方法代码示例

本文整理汇总了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;
    }
}
开发者ID:martinni,项目名称:Calculatrice,代码行数:33,代码来源:commandesqr.cpp

示例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;
    }
}
开发者ID:martinni,项目名称:Calculatrice,代码行数:24,代码来源:commandeln.cpp

示例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));
    }

}
开发者ID:NathanRichard,项目名称:Calculatrice_graphique,代码行数:83,代码来源:OperateurPile.cpp


注:本文中的Constante::clone方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。