Pasar de binario a decimal

//Ejemplo de uso: binarioDecimal("101.00000000");

float ALU::binarioDecimal(string binario)
{
    int numeroDeDecimales = 8;
    //pasa un numero de binario a decimal
    string decimal = binario.substr((binario.length()-numeroDeDecimales),numeroDeDecimales);//coge la parte decimal del binario
    string entero = binario.substr(0,binario.length()-(numeroDeDecimales+1));//coge la parte entera del binario

    //longitud de la parte entera
    int enteroL = entero.length();
    float sol = 0.00;//valor del numero en decimal

    //recorre la parte entera de derrecha a izquierda y va haciendo esto
    /* 1     0     1
       2^2   2^1   2^0        suma los que tienen un 1
       4 +        + 1
        en decimal da 5
      */
    int contador=0;
    for (int var = enteroL-1; var >= 0 ; var--) {
        if(entero.substr(var,1)=="1"){
            sol+=pow(2,contador);

        }
        contador++;
    }

    //calcula en decimal la parte de despues de la coma en el binario
    /*
     0     .     1      0     1
                 1/2^1        1/2^3
                  los sumas
      */
    int decimalL = decimal.length();
    for (int var = 1; var <= decimalL ; var++) {
        if(decimal.substr(var-1,1)=="1"){
            float aux = pow(2,var);
            float auxi = 1/aux;
            sol+=auxi;
        }
    }

    return sol;

}