Bir sınıfta bir üye değişkeni olan ve o sınıfın nesnesi oluşturulmuş olsa bile üye işlevi kullanılarak artırılabilen bir yineleyici bildirmenin bir yolu var mı.C++ 'da volatile yineleyici nasıl bildirilir?
cevap
Bu "değiştirilebilen" anahtar sözcükle olur.
class X
{
public:
bool GetFlag() const
{
m_accessCount++;
return m_flag;
}
private:
bool m_flag;
mutable int m_accessCount;
};
Kesilebilir değil, uçucu olduğunu bildirin.
Üye olarak yineleyiciye ihtiyacınız olduğundan emin misiniz? Yineleyiciler bir yeteneğe sahiptir: geçersiz olurlar. Bir tasarım probleminin küçük bir işareti.
Üye işlevlerini kullanarak bir listeyi yinelemek istiyorum. getFirst ve getNext tür .... Ama bunun için bir değiştirilebilen iterator ilan etmek istiyorum bu yüzden const nesneleri üzerinde yineleyebilirsiniz. –
STL-Yineleyici Tasarımı için gidin. C++ birlikteliğinde kabul edilir ve diğer geliştiricileri de şaşırtmaz. Bu, yineleyicinin sınıfın bir parçası olmadığı anlamına gelir. –
@tmpforspam: Üye işlevinizi çağırırken, nesnenizin davranışı değişirse, bu bir const işlevi değildir. – xtofl
Anladım.
const_iterator
ile birlikte çalışır. Beni değişken ve uçucu olduğunu hatırlattığın için sağol. Değişken ile karışmış uçuculuğum var. Tekrar teşekkürler!
Bu, ciddi bir sözleşme ihlalidir: 'getNextItr()' işlevini çağırdıktan sonra, istemci kodu nesnenin hala aynı olduğunu varsayacaktır, ancak öyle değil. – xtofl
- 1. Delphi 2009'da statik değişkenler nasıl bildirilir?
- 2. Java'da dizi elemanları nasıl geçici olarak bildirilir?
- 3. testing C++ yineleyici
- 4. C++ yineleyici problemleri
- 5. C++ içinde yineleyici
- 6. printf() nasıl bildirilir?
- 7. Yineleyici nasıl kullanılır?
- 8. Döngü tuzaklar için C++ yineleyici?
- 9. C (kendi) yineleyici türü ++ (STL)
- 10. Yineleyici yönünde nasıl parametrelendirilir?
- 11. Java'da volatile anahtar kelime
- 12. C++ 'da nasıl yazılır?
- 13. Sette yineleyici nasıl çalışır
- 14. İkiden fazla yineleyici nasıl sıkıştırılır?
- 15. Zip Çeşitli Yineleyiciler C++ 'da
- 16. Daha anlamlı python yineleyicileri nasıl yapılır? Sadece C++ yineleyici gibi
- 17. C/C++'da Windows Hizmeti Nasıl Oluşturulur?
- 18. C++ 'da ortalama nasıl edinilir?
- 19. C# 'da Bluetooth'u nasıl birleştirebilirim?
- 20. C de değişken boyutlu bir 2D dizisi nasıl bildirilir?
- 21. C içinde bir dizi yapı dizisi nasıl ayrılır ve bildirilir?
- 22. Objektifte c için int ve double nasıl bildirilir?
- 23. Yineleyici davranış
- 24. BaseAdapter'ta veritabanı değişikliği nasıl bildirilir?
- 25. OpenCL'de yerel bellek nasıl bildirilir?
- 26. C++ 'daki yineleyici değerlerini denetlemenin sözdizimsel ek yükünü nasıl düzeltebilirim?
- 27. Objective-C'de statik değişkenler nasıl bildirilir?
- 28. C++ 'da çevreler topluluğu
- 29. C++ 'da Dönüşüm Operatörleri
- 30. C++ 'da renkli çıktı
Bu tamsayılar için çalışır, ancak bir liste veya bir harita için yineleyici ise, const nesneleri üzerinde çalışmaz. Bu, "=" operatörünün mevcut olmadığını söyleyen iter = list.begin() 'de hatayı atar. –
@tmpforspam: Aldığınız tam hata mesajını göremeden, "liste" de aynı şekilde bir const var ve bir const_iterator kullanıyor olmalısınız. –