Kezdőoldal » Számítástechnika » Programozás » Ha van egy osztályom (A) és...

Ha van egy osztályom (A) és van egy (B) akkor ezt, hogyan kell megoldani?

Figyelt kérdés

Az A osztályban van példányosítva egy B osztály azért,hogy használhassam A osztályban a B-t.

Példa:

class A {

B b ;

} ;


class B {

B( int i ) ;

} ;


A példámban a B konstruktora vár egy paraméterre.

Ha én létrehozom az A egy példányát és el akarnám érni velem a B egy adattagját akkor így próbálkoznék.


A a ;

a.b.b egy adattagja.


Az a baj,hogy a b vár egy bemenő paramétert és hogyan oldjam meg,hogy át lehessen adni neki.

Nem tudom jobban kifejtetni magam.


class A {

public:

A()

B b ;

};


class B {

public:

B(short i2) { i = i2; }

short i ;

};


int main() {

A a ;

a.b.i ;

return 0 ;

}


De ez így nem jó mert a b vár egy bemenő paraméterre.

Ez a baj ezt kéne megoldani.És nem lehet alapértelmezett értéket használni.


2012. aug. 24. 00:24
 1/2 Srapnel ***** válasza:

Amikor az A-ban lévő b-t inicializálod, beállítod, akkor egy már létező B egy példányát használod. Amikor azt a példányt létrehozod, akkor adod át B konstruktorának paraméterét.



Tehát, mivel B-t csak egy "new B(3)" szerű módon hozhatod létre, ezért valahol a kódban kell lennie egy ilyennek, különben az A.b null marad, mint a példád main-jében.


Így működne:


A a;

a.b = new B(5);

valamit-csinálsz(a.b.i);

return 0;


Persze ez az egész így sok más szempontból sem jó és szép.

2012. aug. 24. 08:21
Hasznos számodra ez a válasz?
 2/2 iostream ***** válasza:

Az első nagyon Java-san közelíti meg a dolgot, pedig ez C++ kód.

Az a lényeg, hogy A konstruktora előtt lefut B konstruktora. Ha B-nek nincs default (paraméterek nélkül hívható) konstruktora, akkor bizony A-ban explicit inicializálni KELL B-t. Az inicializáló listával:

A(): B(0) {}


Vagy ha szabályozni akarod, akkor A konstruktorának adj egy paramétert:

A(int x): B(x) {}

2012. aug. 24. 10:08
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!