2010-03-20 11 views
6

Parece que no puedo averiguar qué ocurre con mi función ... Necesito pedirle al usuario un precio y luego devolverlo como un doble puntero, pero obtengo toneladas y toneladas de errores:C++ devuelve el puntero doble de la función .... ¿qué pasa?

double* getPrice() 

{ 

    double* price; 

    cout << "Enter Price of CD: " << endl; 

    cin >> &price; 



    return price; 

} 

Respuesta

10

Para utilizar un puntero de cualquier tipo, debe apuntar a la memoria válida. En este momento, tiene un puntero que no está inicializado y apunta a la basura. Pruebe lo siguiente

double* price = new double(); 

Además es necesario tener cin a pasar no es un double un double**.

cin >> *price; 

Tenga en cuenta que esto asignará nueva memoria a su proceso que debe liberarse más adelante. A saber, por la persona que llama de getPrice. Por ejemplo

double* p = getPrice(); 
... 
delete p; 

Lo ideal en este escenario que no se asignarán un puntero en absoluto, ya que introduce innecesaria sobrecarga de administración de memoria. Una implementación mucho más fácil sería la siguiente

double getPrice() { 
    double price; 
    cout << "Enter Price of CD: " << endl; 
    cin >> price; 
    return price; 
} 
+0

genial ... la obtengo ahora. Gracias – user69514

Cuestiones relacionadas