SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: Kandu123 en Martes 19 de Agosto de 2008, 15:55

Título: error en llamada una clase: "no es accesible"
Publicado por: Kandu123 en Martes 19 de Agosto de 2008, 15:55
Buenos Dias

tengo el siguiente codigo:

namespace Vigilancia

{
     class Celador
    {
        string nombre;
        double valorHora;
        string fechaNacimiento;
        bool escopeta = false;

       public Celador(string nom, double valorHor, string fechaNac, bool escopet)
         {
             nombre = nom;
             valorHora = valorHor;
             fechaNacimiento = fechaNac;
             escopeta = escopet;
          }

    }
     class Ppal
          {
               
                  [STAThread]
                    static void Main(string[] args)
                      {
                         //Instanciamos dos objetos de la clase Celador
                         //en otras palabras creamos a los Celadores Rodrigo y Oscar

                                               Celador celador1 = new  Celador(); // aqui aparece el error

                                               celador1.nombre = "Rodrigo";

                                               celador1.valorHora = 10000;

                                               celador1.fechaNacimiento = "10/03/1965";
                            }

                         


}



tengo un problema y me aparece el siguiente error:

Error   2   'Vigilancia.Celador.nombre' no es accesible debido a su nivel de protección

gracias cualquier ayuda.

saludos
Título: Re: error en llamada una clase: "no es accesible"
Publicado por: ProfesorX en Martes 19 de Agosto de 2008, 18:59
1. Recuerda utilizar [ code][ /code], mejora la legibilidad del codigo.
2. El error sucede porque las variables de tu clase no estan definidas explicitamente como public, y por defecto, las variables de una clase son de tipo private, con el constructor pasa lo mismo, no tienes un constructor para Celador() con cero parametros, entonces el compilador crea un constructor por defecto, y los constructores por defecto son de tipo private, asi que por eso dice que el constructor no esta accesible.

La solucion es que declares tus variables explicitamente como public,

Código: C#
  1.  
  2. class Celador
  3. {
  4. public string nombre;
  5. public double valorHora;
  6. public string fechaNacimiento;
  7. public bool escopeta = false;
  8.  
  9.  

ademas define explicitamente un contructor por defecto de tipo public o utiliza el otro constructor que ya tienes, y pasale los parametros, ejemplo:

Código: C#
  1.  
  2. Celador celador1 = new Celador("Rodrigo", 10000, "10/03/1965", true);
  3.  
  4.  
Título: Re: error en llamada una clase: "no es accesible"
Publicado por: Kandu123 en Martes 19 de Agosto de 2008, 20:45
Muchas Gracias, ye resolvi la duda.
saludos