Avatar billede php_gubbi Nybegynder
28. november 2003 - 01:53 Der er 7 kommentarer og
1 løsning

Få fat i den klasse der opretter et objekt inde fra objektet

Hejsa

Jeg har lavet en klasse A og en klasse B.

B opretter X instanser af A.

Nu vil jeg gerne vide om der er en let måde at komme inde fra en metode i A og kalde en metode i B.

Har overvejet at sende en pointer med i constructoren ... men vil gerne vide om der er en letere måde ?
Avatar billede pablopablo Nybegynder
28. november 2003 - 02:29 #1
øøh...er ikke sikker på jeg helt forstår hvad du mener?

men prøver nu alligevel...

B nyInstans = new B();
nyInstans.metodenDuVilKaldeIBKlassen();

Hvis du vil sende den pågældende instans af klasen A til klasse B...skal du skriv følgende :

Klasse B;

public dinKonstruktørIKlasseA()
{
B = new dinKonstruktørIKlasseB(this);
}

Håber det kan hjælpe dig lidt??

mvh. PabloPablo
Avatar billede php_gubbi Nybegynder
28. november 2003 - 02:38 #2
Sorry min forklaring er måske lidt vag....
så her er et eksempel.

class A {
minMetode() { B.bMetode(); }
}

class B {

bMetode() { ..... }

B() { A a = new A(); }

}

Hele pointen er at minMetode i A skal kunne benytte sig af bMetode der ligger i klasse B.

hvis det er det du har vist mig PabloPablo må du lige svare igen ;)
Avatar billede jakoba Nybegynder
28. november 2003 - 03:28 #3
hvis din metode i B er statisk er der slet ikke noget problem. du bruger blot klassenavnet foran metodens navn (som i dit eksempel)

class A {
minMetode() { B.bMetode(); }    // du mangler en returtype her
}

class B {
stativ void bMetode() { ..... } // tilføjet static
B() { A a = new A(); }
}
Avatar billede jakoba Nybegynder
28. november 2003 - 03:30 #4
og så staver jeg galt  (det skal være static. ikke stativ)
static void bMetode() { ..... } // tilføjet static
Avatar billede php_gubbi Nybegynder
28. november 2003 - 03:45 #5
Det har du da fuld stændig ret i ... det er lidt en workaround, men de virker jo også.

Tak Jacoba ... hvis du vil have point skal du lige svare ;)
Avatar billede jakoba Nybegynder
28. november 2003 - 03:52 #6
ok
Avatar billede sago Nybegynder
28. november 2003 - 10:06 #7
Og hvis den ikke må være static, må du sende en "this" reference med når du opretter objektet:

A a = new A(this);

Og så skal constructoren i A se cirka sådan her ud:

B bRef;
public A(B bRef){
  bRef = this.bRef;
}

Herefter kan du kalde metoden bRef.bMetode() fra A klassen.
Avatar billede sago Nybegynder
28. november 2003 - 10:09 #8
Ups, det skal være:

this.bRef = bRef;

Ikke omvendt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester