2012-03-06 18 views
8

Por lo tanto, en mi clase declarada como "clase pública pcb", tengo el siguiente constructor: pcb público (int p, int a, int b).No se puede acceder a ninguna instancia adjunta de tipo fbMain. Debe calificar la asignación con una instancia adjunta de tipo fbMain

En principales (args String []) public static void trato de llamar al constructor en un bucle donde añado un "PCB" en una posición diferente en una matriz. Aquí está el ciclo for donde la última línea es donde recibo el error:

for(int i=0; i<numJob; i++){ 
    pI = scan.nextInt(); 
    arr = scan.nextInt(); 
    bst = scan.nextInt(); 
    notHere[i]=new pcb(pI, arr, bst); 
} 

¿Qué estoy haciendo mal? ¿Es sintaxis o es la estructura de mi programa? No he usado tanto Java y creo que ese es mi principal problema.

+0

Olvidó mostrarnos la clase 'pcb'. –

+0

Posible duplicado de [Java - No se puede acceder a ninguna instancia adjunta de tipo Foo] (http://stackoverflow.com/questions/9560600/java-no-enclosing-instance-of-type-foo-is-accessible) – fabian

Respuesta

15

No ha dado todo el código relevante, pero el error indica que pcb es una clase interna de fbMain:

public class fbMain { 
    //... 
    public class pcb { 
    } 
    //... 
} 

Puede corregir este error haciendo pcb estático:

public static class pcb { 
} 

O moviendo la clase a su propio archivo. O, si pcb no puede ser estático (ya que se asocia con una instancia de fbMain), se puede crear un nuevo pcb haciendo pasar una instancia de fbMain:

notHere[i] = instanceOfFbMain.new pcb(pI, arr, bst); 

probable es el primero que desea. Tenga en cuenta también que, por convención, los nombres de tipos de Java comienzan con una letra mayúscula.

3

Añadir static a su declaración de la clase como esto

public static class pcb... 
Cuestiones relacionadas