aynı parametrelerle aşırı yüklenmiş işleve belirsiz çağrı
class A
{
public :
// void func( const int ) const {} // если заменить на это - будет компилироватьсяvoid func( constint ) {}
// void func( const int& ) const {} // если заменить на это - будет компилироватьсяvoid func( constint & ) {}
};
voidOnStart ()
{
A a;
a.func( 0 );
int i1 = 0 ;
a.func(i1);
constint i2 = 0 ;
a.func(i2); // 'func' - ambiguous call to overloaded function with the same parameters
}
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" );}
};
voidOnStart ()
{
A a;
A const b;
a.func();
b.func();
}
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
constint i2 = 0 ;
a.func(i2); // 'func' - ambiguous call to overloaded function with the same parameters
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
İ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.
İ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
aynı parametrelerle aşırı yüklenmiş işleve belirsiz çağrı
Bu benim yanlış anlamam mı yoksa bir hata mı?
Bu benim yanlış anlamam mı yoksa bir hata mı?
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.
Yanlış anlama.
Her şey, diye cevap verdim. ))))
Bu aptal kaynak örneğinin oluşturulması uzun zaman aldı. Yaratırken mizah duygusu neredeyse yok oldu.
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:
İ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.
Şimdiye kadarki tüm aramalar sorunsuz geçti.
Bakın ne çıkacak:
Bu başka bir operadan.