Hatalar, hatalar, sorular - sayfa 1730
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bu doğru, burada yazarken, T = A *
Sonra burada derleme hatası
Aynen öyle. Tüm bu iddiaları okudum ve sorunun nerede olduğunu anlayamıyorum. Bu dosyaları bir diskette mi depolayacaksınız?
Ne yani, 50 kilobaytlık bir dosya yerine 100 kilobaytlık bir dosya kaydettiğinizde disk eskir mi? Kendin de komik değil mi? )
Ve bir telif hakkı sembolü nedeniyle (prensipte uluslararasıdır ve kodunun 127'den büyük olmasına rağmen tüm kodlamalarda bulunur) , dosya boyutunun anlamsız bir şekilde iki katına çıkması normal midir? Akıllıca değil mi? Dosyaları neden gereksiz yere 2 kez şişirelim?
Sorun sadece boyutta değil, aynı zamanda bağlamsal aramada da. Dosyalar ASCII'de olduğu sürece, dosya yöneticileri de dahil olmak üzere birçok üçüncü taraf program, bağlam dizesine göre dosyaları arayabilir. Bunu neredeyse her gün kullanıyorum. Bu bağlamda yerel MQ düzenleyicisi, diğer birçok belirgin kodlama sorunuyla aynı sıfırdır. Unicode'u alır almaz, bağlamsal arama ile ilgili 2 sorun ortaya çıkıyor: önce kodlamayı "anlamanız", ardından tek bir forma normalleştirmeniz (örneğin, tüm ASCII'yi anında Unicode'a kodlamanız) ve ancak o zaman "aramanız" gerekir - tüm programlar bunu yapamaz veya yapmak istemez, ancak bunlar için bu olabilir, nokta 2 - frenleri elde ederiz.
Elbette, bazıları için vidaya ek olarak yeni bir bilgisayar satın almak, neyin uygun ve etkili yazılımın olması gerektiğini düşünmekten veya en azından diğer ürünler örneğinden öğrenmekten daha kolaydır.
Sonra burada derleme hatası
C++'da da belirsizlik yazın: const T const
Ancak bir çıkış yolu var - const'ı sağa yeniden düzenleyin
void f1( T const & a[] ) {} //error: 'const' - unexpected token
class A {};
void f2( A const * const & a[] ) {} //нормально
class B {
void g1() const { f1( a ); } //error: 'f1' - cannot to apply function template
void g2() const { f2( a ); } //нормально
A *a[];
};
C++'da da belirsizlik yazın: const T const
Ancak bir çıkış yolu var - const'ı sağa yeniden düzenleyin
C++ hatasız derler (sözdizimindeki farkı dikkate alarak)Ancak "const A" ve "A const" aynı anlama geldiğinde mantıksal olarak garip çıkıyor.
" A const * " öğesinin bir const nesnesine değil bir const işaretçisi olması mümkündür.
Öyle görünüyor. Çünkü böyle bir yapı var
void f( const A const * const & a[] ) {}
Bir işaretçiyi değiştiremezsiniz, referansa göre değiştiremezsiniz ve nesneyi/nesneleri değiştiremezsiniz.
Hızlı kod elde etme açısından, böyle bir yapı derleyiciye gerekli ipucunu verebilir mi?
Ve bir telif hakkı sembolü nedeniyle (prensipte uluslararasıdır ve kodunun 127'den fazla olmasına rağmen tüm kodlamalarda bulunur), dosya boyutunun 2 kat artması normaldir...
void f( const A const * & a[] ) {}
Öğeleri değiştiremezsiniz, ancak bir dizinin boyutunu değiştirebilirsiniz .
Harika, yöntemlerin böyle görünebileceği ortaya çıktı
class B
{
const A const * Method( const A const * const & a[] ) const
{
return (a[ 0 ]);
}
};
" A const * " öğesinin bir const nesnesine değil bir const işaretçisi olması mümkündür.
Bir şablon değilse, "A const *", "const A *" ile eşdeğerdir ve bir şablon ise duruma göre
{
public :
int i;
};
void f( A const * & a[] )
{
a[ 0 ].i = 1 ; // 'i' - constant cannot be modified
}
Özellikle, bu ileride düzeltildi https://www.mql5.com/ru/forum/1111/page1749#comment_2892563
Bir şablon değilse, "A const *", "const A *" ile eşdeğerdir ve bir şablon ise - duruma göre (C++'da)
İlginç bir şekilde, böyle bir tasarımda
void f( const A const * & a[] ) {}
Öğeleri değiştiremezsiniz, ancak bir dizinin boyutunu değiştirebilirsiniz.