Загрузка данных


class Const : public Expression {
public:
    Const(int v) {
        val = v;
    }
    int Evaluate() const override {
        return val;
    }
    std::string ToString() const override {
        return std::to_string(val);
    }
private:
    int val;
};

class Sum : public Expression {
public:
    Sum(ExpressionPtr l, ExpressionPtr r) {
        left = l;
        right = r;
    }
    int Evaluate() const override {
        return left->Evaluate() + right->Evaluate();
    }
    std::string ToString() const override {
        return left->ToString() + '+' + right->ToString();
    }
private:
    ExpressionPtr left;
    ExpressionPtr right;
};

class Product : public Expression {
public:
    Product(ExpressionPtr l, ExpressionPtr r) {
        left = l;
        right = r;
    }
    int Evaluate() const override {
        return left->Evaluate() * right->Evaluate();
    }
    std::string ToString() const override {
        return left->ToString() + '*' + right->ToString();
    }
private:
    ExpressionPtr left;
    ExpressionPtr right;
};