• [^] # Re: Avantage pas compris

    Posté par (Mastodon) . En réponse au journal Visiteurs en C++. Évalué à 2.

    Ajouter un attribut à ton visiteur avec un accesseur.

    Pas que. Comparons.

    Version avec le type de retour.

    Type *visitBinaryExpression(BinaryExpression& expr) {
     Type *left = expr.getLHS()->accept(*this);
     Type *right = expr.getRHS()->accept(*this);
     return ComputeType(left, right);
    }
    
    

    Version sans le type de retour.

    void visitBinaryExpression(BinaryExpression& expr) {
     expr.getLHS()->accept(*this);
     Type *left = getResult();
     expr.getRHS()->accept(*this);
     Type *right = getResult();
     Type *result = ComputeType(left, right);
     setResult(result);
    }
    
    

    Ben je préfère la première version dans ce cas, beaucoup plus lisible et compréhensible.