2012-02-18 25 views
5

.hpp dosyamda ++ için aşırı yüklenmiş bir operatör oluşturdum ve sonra da .hpp dosyasında da çağıran bir işlev oluşturdum. Daha sonra .cpp dosyası işlevi çağırır, ancak işlev ++ kodunu bulduğunda aşırı yüklenen operatöre zarar vermez, bunun yerine ++ için varsayılan işlem operatörünü kullanır. Neden aşırı yüklenmiş operatörümü kullanmıyor? İşte Neden aşırı yüklenmiş operatörümü ++ için kullanmıyorsunuz?

++ için operatörler: Burada

iterator& operator ++() { // pre-increment 
     std::list<value_type>::iterator i = listOfValues.begin(); 
     advance(i,1); 
     return &*i; 
    } 

    Square_List operator ++ (int) { // post-increment 
     std::list<value_type>::iterator i = listOfValues.begin(); 
     advance(i,1); 
     return &*i; 
    } 

Ve işlevi kullanıyor: son olarak

template <typename A_> 
void testerIncrement(A_ toInc) 
{ 

    toInc = listOfValues.begin(); 
    cout << "\n" << *toInc; 
    ++toInc; 
    cout << "\n" << *toInc; 
    ++toInc; 
} 

Ve .cpp dosyasında fonksiyonu için çağrı

ca.testerIncrement(ca.listOfValues.begin()); 

cevap

4

Önek arttırma işleci ++ 'yı, bir argüman sınıfına sahip olmayan, ikili olmayan işlev operatörüyle aşırı yüklersiniz sınıf tipine veya argüman içermeyen bir üye fonksiyon operatörüne bir referans veya tür.

Üye olmayan operatörler kullanıyorsunuz. Yani sözdiziminiz void operatörü ++ (yineleyici &) olmalıdır; // önek ve geçersiz işleç ++ (Square_List, int); // postfix.

İlgili konular