Hatalar, hatalar, sorular - sayfa 3095

 

bir komut dosyası var

 class X {};

void fTest(X &Obj) { return ;}

void OnStart ()
  {
   X obj;
   fTest( GetPointer (obj));                       //ОК
//fTest(&obj);         //Compile error: '&' - parameter passed as reference, variable expected   
  }

Soru: GetPointer (obj) tamam olarak geçirildiyse, neden &obj geçmiyor?

Bir şey için gerekli mi?

 

Her ihtimale karşı açıklığa kavuşturmak istiyorum. Diyelim ki bu kodumuz var:

ClassX *x= new ClassX;

//какой-то код

delete x;

//......много кода, прошло много времени

ClassY *y= new ClassY;

Print (x==y);             // может ли быть true?
Prensipte x'in y'ye eşit olması mümkün müdür?
 
mktr8591 # :

Her ihtimale karşı açıklığa kavuşturmak istiyorum. Diyelim ki bu kodumuz var:

Prensipte x'in y'ye eşit olması mümkün müdür?

Teorik olarak - evet. Önceden, işaretçi çıktısı bir sayaç gösteriyordu (tüm nesnelerin sayısını görebiliyordunuz). Şimdi erken.

 
fxsaber # :

Teorik olarak - evet. Önceden, işaretçi çıktısı bir sayaç gösteriyordu (tüm nesnelerin sayısını görebiliyordunuz). Şimdi erken.

Belki, ama rastgele bir ev için küçük değerler - Genellikle yedi basamaklı sayılarım var.
 
mktr8591 # :

bir komut dosyası var

Soru: GetPointer (obj) tamam olarak geçirildiyse, neden &obj geçmiyor?

Bir şey için gerekli mi?

Burada GetPointer()'a gerek yoktur.

   fTest(obj);                       //ОК

 // Это для чего-то нужно? 
   X *objptr;
   objptr = &obj;  
 
Alain Verleyen # :

Burada GetPointer()'a gerek yoktur.

Kabul ediyorum. Sadece davranışta neden böyle bir fark olduğunu merak ediyorum.
 
mktr8591 # :

Her ihtimale karşı açıklığa kavuşturmak istiyorum. Diyelim ki bu kodumuz var:

Prensipte x'in y'ye eşit olması mümkün müdür?

imkansız yok

 
mktr8591 # :

Her ihtimale karşı açıklığa kavuşturmak istiyorum. Diyelim ki bu kodumuz var:

Prensipte x'in y'ye eşit olması mümkün müdür?


Bir işaretçiyi bir referansa otomatik olarak göndermemenizi ve bunu aşağıdaki kodda gösterildiği gibi (kırmızı ile vurgulanmıştır) açıkça yapmanızı tavsiye ederim:

 class A
  {
  };

void func(A &)
  {
  }

void OnStart ( void )
  {
   A a;   
   A *pa=&a;

   func( * pa);
  }
 
Ilyas # :


Bir işaretçiyi bir referansa otomatik olarak göndermemenizi ve bunu aşağıdaki kodda gösterildiği gibi (kırmızı ile vurgulanmıştır) açıkça yapmanızı tavsiye ederim:

Ne değişti? Sonuçta aynı değil mi?
 

Hata hakkında hiçbir soru yok, ancak bir nedenden dolayı iki katına çıktı.

 class X {};

template < typename T>
void fTest(T &Obj) { return ;}

void OnStart ()
  {
   X obj;
   fTest( GetPointer (obj));                       //'GetPointer' - parameter passed as reference, variable expected - ДВАЖДЫ!
  }