Avaliar expressão numérica

Pessoal, tenho o seguinte código que retorna o resultado de uma expressão numérica a partir de uma string. O meu problema é que o código não trabalha com valores double, apenas inteiros. Alguém sabe como fazer o código identificar valores double?

#ifndef AVALIAR_H
#define AVALIAR_H

using namespace std;

namespace matematica {

class Avaliar {
 private:
    char* expressao;
 public:
    Avaliar(char* expressao) {
        this->expressao = expressao;
    }

    char get_expressao() {
        return *this->expressao;
    }

    char get() {
        return *this->expressao++;
    }

    double numero() {
        double resultado = get()-'0';
        while (get_expressao() >= '0' && get_expressao() <= '9') {
            resultado = 10*resultado+get()-'0';
        }
        return resultado;
    }

    double fator() {
        if (get_expressao() >= '0' && get_expressao() <= '9') {
            return numero();
        } else if (get_expressao() == '(') {
            get();
            double resultado = valor_expressao();
            get();
            return resultado;
        } else if (get_expressao() == '-') {
            get();
            return -fator();
        }
        return 0;
    }

    double termo() {
        double resultado = fator();
        while (get_expressao() == '*' || get_expressao() == '/') {
            if (get() == '*') {
                resultado *= fator();
            } else {
                resultado /= fator();
            }
        }
        return resultado;
    }

    double valor_expressao() {
        double resultado = termo();
        while (get_expressao() == '+' || get_expressao() == '-') {
            if (get() == '+') {
                resultado += termo();
            } else {
                resultado -= termo();
            }
        }
        return resultado;
    }

    double resultado() {
        return valor_expressao();
    }
};

}

#endif