Létezik ilyen osztály kapcsolat c++-ban?
Sajnos kódot nem tudok kirakni, mert csak elméletileg gondoltam végig.
Ha A osztálynak B osztály része, tehát B benne van az A-ban és A akkor B minden metódusát használja.
Az hogyan oldható meg, hogy B módosíthassa A adattagjait?
Tehát B benne van A-ban (eddig értem), de B hogy módosíthatná saját metódusaival az A adattagjait?
Google keresési tippet, egy rövid leírást, bármit elfogadok.
Ha van A-nak egy "int foo;" adattagja és "B b;" objektuma akkor a b.foo() így tudja módosítani A foo adattagját:
b.bar(A *a) {
a->foo = 5;
}
Ha A-ban foo privát adattag akkor A-ban legyen egy "friend class B".
Pontosabban:
void B::bar(A *a) {
a->foo = 5;
}
Ha B egy beágyazott osztály, akkor is tudnia kell hogy melyik objektumot kell írnia.
Kihackelhető valahogy a memóriacím, de nem érdemes a kód láthatóságát és megbízhatóságát ilyenekkel rontani:
#ifndef OUTERCLASS
#define OUTERCLASS(className, memberName) \
reinterpret_cast<className*>(reinterpret_cast<unsigned char*>(this) - offsetof(className, memberName))
#endif
(forrás: SO)
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!