Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/05/2016, 06:43
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 3 meses
Puntos: 204
Respuesta: Metodo gets da error "is private"

Código C++:
Ver original
  1. class Particula {
  2.  private:
  3.   string nombre;
  4.   float masa; //kg
  5.   float posX; // mts
  6.   float vel_0; // mts/s
  7.   float acel_0; // mts/s^2

todo lo que esté en la parte private queda oculto a todo aquello que no pertenezca a la clase. Es por esta razón que el siguiente código si compila:

Código C++:
Ver original
  1. void Particula::setValores(string name, float M, float X, float vel, float acel){
  2.    nombre = name;
  3.    masa = M;
  4.   posX = X;
  5.   vel_0 = vel;
  6.   acel_0 = acel;
  7.  }

Pero el siguiente no:

Código C++:
Ver original
  1. int main(){
  2.    float t;
  3.    cout << endl << endl;
  4.  
  5.   Particula p1("P_1", 1, 0,0,0);
  6.   cout << p1.vel_0;

¿Soluciones?

La más habitual consiste en implementar un getter para recuperar el valor:

Código C++:
Ver original
  1. class Particula
  2. {
  3. public:
  4.   float Velocidad() const
  5.   { return vel_0; }
  6. };

Otra opción pasa por dejar las variables en la parte pública... ahora que si todo en la clase va a ser público entonces queda más limpio declarar la misma como struct que, a diferencia de class, su visibilidad por defecto es public:

Código C++:
Ver original
  1. struct Particula
  2. {
  3.   string nombre;
  4.   float masa; //kg
  5.   float posX; // mts
  6.   float vel_0; // mts/s
  7.   float acel_0; // mts/s^2
  8. };

Un saludo
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.