PDA

Tam Sürümünü Görmek İçin : C++'da Referans kullanımı


Darkstar
09/11/2004, 22:13
Selamlar,

Şimdiye kadar referansları hep fonksiyon argümanı olarak kullanmıştım.Geçenlerde pointer yerine bir referans değişken tanımlayıp kullanmak istedim ama bir türlü beceremedim.

Mesela:

...
Myclass m1, m2;
Myclass &myc;
int x;
cin>>x;
if (x==1)
myc = m1;
else if (x==2)
myc = m2;
...

şeklinde kullanmak istiyorum ama compiler myc'yi initialize etmeden kullanamıyacağımı söylüyor. Ancak ben myc'yi initialize etmeden if condition'larına göre kullanmak istiyorum. Referansları bu şekilde kullanmak mümkünmü?


acehreli
10/11/2004, 00:08
Referanslar var olan nesnelerin takma adlaridir. Onun icin, bir nesne olmadan referans tanimlayamayiz.Yapmak istediginin bir yolu, bir islev yazarak onun donusunu kullanmak olabilir:

Myclass & birisini_sec(Myclass & bir, Myclass & iki, ...);

Myclass & myc = birisini_sec(m1, m2, ...);

Veya once bir gostergeden yararlanabilirsin. Referansi onunla kurarsin:

Myclass * p = 0;

if (x == 1)
p = &m1;
....
Myclass & myc = *p;

Ali

Volkan Uzun
10/11/2004, 03:17
yeri geldimi cok kafa karistirir bu referanslar :)
hatta soyle kafa karistirici bir kullanim gormustm

int &GetX()
{
return sys::__x;
}
sonra bir yerlerde:
GetX() = 5 ;

Darkstar
11/11/2004, 00:07
Güzel bir yöntem:

Referanslar var olan nesnelerin takma adlaridir. Onun icin, bir nesne olmadan referans tanimlayamayiz.Yapmak istediginin bir yolu, bir islev yazarak onun donusunu kullanmak olabilir:

Myclass & birisini_sec(Myclass & bir, Myclass & iki, ...);

Myclass & myc = birisini_sec(m1, m2, ...);

Veya once bir gostergeden yararlanabilirsin. Referansi onunla kurarsin:

Myclass * p = 0;

if (x == 1)
p = &m1;
....
Myclass & myc = *p;

Ali

teşekkürler...