Hatalar, hatalar, sorular - sayfa 1691

 
kod oluşturma hatası
 void OnStart ()
{
   int a = { 0 }; // code generation error
}
 
Andrey Dik :

İlgili grafik dönemi için CopySpread() işlevi tarafından hangi yayılma değerleri döndürülür?

Ortalama, minimum veya maksimum olup olmadığı net değil ve işlevin yardımı bu konuda hiçbir şey söylemiyor.

 
Andrey Dik :

İlgili grafik dönemi için CopySpread() işlevi tarafından hangi yayılma değerleri döndürülür?

Ortalama, minimum veya maksimum olup olmadığı net değil ve işlevin yardımı bu konuda hiçbir şey söylemiyor.

nerede, hesapta veya test cihazında
 
Alexander Bereznyak :
nerede, hesapta veya test cihazında
bunların hiçbiri kılavuzda yok.
 

aynı parametrelerle aşırı yüklenmiş işleve belirsiz çağrı

 class A
{
public :  
//  void func( const int ) const {} // если заменить на это - будет компилироваться
   void func( const int ) {}

//  void func( const int& ) const {} // если заменить на это - будет компилироваться
   void func( const int & ) {}
};

void OnStart ()
{
  A a;

  a.func( 0 );  

   int i1 = 0 ;
  a.func(i1);  

   const int i2 = 0 ;
  a.func(i2); // 'func' - ambiguous call to overloaded function with the same parameters  
}

Bu benim yanlış anlamam mı yoksa bir hata mı?

 
fxsaber :

Bu benim yanlış anlamam mı yoksa bir hata mı?

Anladığım kadarıyla, bu kod her iki durumda da aynı şekilde davranmalıdır.
 
fxsaber :

aynı parametrelerle aşırı yüklenmiş işleve belirsiz çağrı

Bu benim yanlış anlamam mı yoksa bir hata mı?

Yanlış anlama.

Her şey, diye cevap verdim. ))))

 
Комбинатор :
Anladığım kadarıyla, bu kod her iki durumda da aynı şekilde davranmalıdır.

Ayrıca düşünüyorum.

Sergey Vladimirov :

Yanlış anlama.

Her şey, diye cevap verdim. ))))

Bu aptal kaynak örneğinin oluşturulması uzun zaman aldı. Yaratırken mizah duygusu neredeyse yok oldu.

 
fxsaber :

Bu aptal kaynak örneğinin oluşturulması uzun zaman aldı. Yaratırken mizah duygusu neredeyse yok oldu.

İyi. )

Her üç arama seçeneğinde de, argümanın değere göre mi yoksa referansa göre mi iletildiğini anlamak imkansızdır, bu nedenle derleyici hangi işlevin çağrılacağını seçemez. Ve const değiştirici onları aşırı yükler: void f(){} ve void f() const {} farklı işlevlerdir. Örneğinizde yöntemlerden birini const olarak bildirirseniz, belirsizlik ortadan kalkar: derleyici, çağrının bir const nesnesinden yapılıp yapılmadığına bağlı olarak doğru yöntemi seçecektir (örneğinizdeki argümanın türü önemli değil) ).

a nesneniz const değil, bu nedenle const içermeyen yöntem üç kez de çağrılacak. Bir nesneyi const (A const a;) olarak bildirirseniz, const yöntemi çağrılır.

Bakın ne çıkacak:

 class A
{
public :  
   void func() { Print ( "Non const" );}
   void func() const { Print ( "Const" );}
};

void OnStart ()
{
        A a;
        A const b;
        
        a.func();
        b.func();
}
 
Sergei Vladimirov :

İyi. )

Her üç arama seçeneğinde de, argümanın değere göre mi yoksa başvuruya göre mi iletildiğini anlamak imkansızdır , bu nedenle derleyici hangi işlevin çağrılacağını seçemez. Ve const değiştirici onları aşırı yükler: void f(){} ve void f() const {} farklı işlevlerdir. Örneğinizde yöntemlerden birini const olarak bildirirseniz, belirsizlik ortadan kalkar: derleyici, çağrının bir const nesnesinden yapılıp yapılmadığına bağlı olarak doğru yöntemi seçecektir (örneğinizdeki argümanın türü önemli değil) ).

a nesneniz const değil, bu nedenle const içermeyen yöntem üç kez de çağrılacak. Bir nesneyi const (A const a;) olarak bildirirseniz, const yöntemi çağrılır.

İlk sen başlayacaksın. SADECE burada hata
 const int i2 = 0 ;
a.func(i2); // 'func' - ambiguous call to overloaded function with the same parameters

Şimdiye kadarki tüm aramalar sorunsuz geçti.

Bakın ne çıkacak:

Bu başka bir operadan.