Hatalar, hatalar, sorular - sayfa 1705

 
fxsaber :
Ben aptalım. Söyle bana neden mümkün değil?
Anladım.
 
fxsaber :
Anladım.
açıklamak
 
Комбинатор :
Açıklamak
İşe yaramayacak - terminolojik bir boşluk.
 
Комбинатор :
Açıklamak
this[0] burada bir değerdir.
 
Sergei Vladimirov :
this[0] burada bir değerdir.

Net olmayan şey bu.

Atama ilk durumda çalışıyorsa, ikinci durumda mantıksal olarak çalışması gerekir. Çünkü ilk durumda, işaretçiye aynı değer atanır, ancak operatör daha sonra çalışır!

Bu tabi ki sadece benim görüşüm. Ama avı anlamak için.

 
Комбинатор :

Net olmayan şey bu.

Benim için de net değil. ))Güncel. Zaten açık.

Atama ilk durumda çalışıyorsa, ikinci durumda mantıksal olarak çalışması gerekir. Çünkü ilk durumda, işaretçiye aynı değer atanır, ancak operatör daha sonra çalışır!

Bu tabi ki sadece benim görüşüm. Ama avı anlamak için.

Bir değer yalnızca soldaki bir değere atanabilir veya geçici bir sabit olabilir.

Artı tarafta ne işe yarar:

 class A
{
public :
         int m[ 10 ];

         int & operator [] ( const int i)
        {
                 return ((m[i]));
        }
};

int main()
{
        A oA;
        oA[ 2 ] = 5 ;
}

Ama bu değil.

 class A
{
public :
         int* m[ 10 ];

         int * operator [] ( const int i)
        {
                 return ((m[i]));
        }
};

int main()
{
        A oA;
        oA[ 2 ] = new int ;     // error C2106: =: левый операнд должен быть левосторонним значением
}
 
Sergei Vladimirov :

Ama bu değil ve ben bir şeye yetişemiyorum, ne fark eder:

Dizine bir bağlantı eklerseniz çalışacaktır. Veya bir çift işaretçi.
 
Комбинатор :
Dizine bir bağlantı eklerseniz çalışacaktır. Veya bir çift işaretçi.
Hangi bağlantı, nerede anlamadım?
 
Affedersin, mlin. İkinci örnekte, operatör[] i-th öğesinin adresini döndürür - elbette değiştirilemez. Akşamları kapatın.
 

Oh, yavaşlıyorum, ikinci örnek genellikle yanlış

Bu nedenle şu mantıklıdır:

hata: 'int*&' türündeki const olmayan başvurunun 'int*' türündeki bir değerden geçersiz başlatılması

Neden: