class A
var ve A class B: public A
alt sınıfına ihtiyacım var. Bu sınıftan miras alabileceğimi nasıl başarabilirim, fakat bu iki sınıftan başka kimsenin miras kalmasını hiç kimseye bırakamaz mı? class A
yaptıktan sonra son B, A'dan devralmayacaktır.Yalnızca bir sınıftan bir kez miras al
cevap
Yorum yaptığım gibi: Ne istediğinizi belirsiz değilim. A
'dan miras alabilmeniz için B
'u istiyorsunuz, ancak herhangi bir zamanda devredilebilecek yeni sınıflar da yok mu? Bu varsayımdan yola çıkarak, en iyi bahis, finalini yaparken A
'un özel ve arkadasının B
yapmasını sağlamaktır.
Neyin peşinde olduğumu bilmiyorum, akıllıca tasarım, ama bu kötü bir tasarım. Ancak, sorunuza cevap veriyor.
C++ uygulamasında, yalnızca bir sınıfın başka bir sınıftan miras kaldığını söylemek mümkün değildir. Ya bir sınıf final
(ve dolayısıyla devredilemez) ya da değil.
Yapabileceğiniz en iyi şey, A
yapıcılarını özel olarak beyan etmek ve B
'u A
bir arkadaş haline getirmektir. Ancak bu, diğer kullanıcıların A
türünde nesneler oluşturmasını zorlaştırabilir.
class B;
class A {
// everything's private
friend class B; // << except for class B
};
class B final // << final prevents from further inheritance
: A {
public:
// What you want to publish ...
};
olarak önce belirtildiği rağmen daha sınıf var istemedikçe, ben class A
için o kadar anlamı yok: (Bunun iyi bir tasarım aslında sanmıyorum gerçi)
Sadece bir fikir class B
gibi somut örnekler.
- 1. Soyut sınıftan miras kalan sınıflar
- 2. JQuery: 'Yalnızca bir kez', '
- 3. jQuery - Yalnızca bir kez
- 4. iOS yalnızca bir kez Epos2Printer
- 5. ValueAnimator yalnızca bir kez tekrarlanır
- 6. System.Threading.Timer yalnızca bir kez tetikleniyor
- 7. Yalnızca bir kez çalıştır ayarı
- 8. Başka bir sınıftan devralan bir sınıfı alay
- 9. ScheduledExecutorService Service içinde yalnızca bir kez çalıştırın
- 10. ViewDidAppear'ı yalnızca bir kez nasıl arayabilirim?
- 11. Yerel bildirim yalnızca bir kez nasıl tetiklenir?
- 12. Neden işlev sayfamda yalnızca bir kez yükleniyor?
- 13. Yalnızca bir kez oluşan satırları nasıl özetleyebilirim?
- 14. Xquery'de değişkenler yalnızca bir kez nasıl görüntülenir?
- 15. Node.js - yalnızca bir kez başlatılmış modüller nelerdir?
- 16. Döngü tekrarları için yalnızca bir kez
- 17. Bir while döngüsünde yalnızca bir kez nasıl bir deyim yazdırırım?
- 18. yalnızca ilk kez
- 19. Python'da miras alınan bir sınıftan bir üst sınıf özniteliği nasıl oluşturulur ve alınır?
- 20. C++ 'da, bir ana sınıftan miras alınan bir dizi nesne nasıl oluşturulur?
- 21. Başka bir sınıftan bir dizi nasıl alınır
- 22. Şablon bağımsız değişkeninin sınıftan miras alındığını kontrol edin
- 23. __slots__ öğesini tanımlayan birden fazla sınıftan miras alınamaz mı?
- 24. getAssets(); Başka bir sınıftan
- 25. Türetilmiş bir sınıftan C#
- 26. Linq, bir deyimde yalnızca bir kez işlev çağrısı
- 27. Kritik Bölüm'ü yalnızca bir kez bir işlem için başlat
- 28. Bir sayfaya yalnızca bir kez erişme php kullanarak
- 29. Miras ve kopya kurucu - özel alanların temel sınıftan nasıl başlatılacağı?
- 30. GCC, arkadaşınız olduğunda neden özel bir yuvalanmış sınıftan miras almaya izin vermiyor?
Ne istediğiniz hakkında net değilim. B'nin A'dan miras alabilmesini istiyorsun, ama ya hiçbir zaman sahip olamayacak yeni sınıflar yok? – David
“A” ve “B” sınıflarını tek bir sınıfa birleştirmek ve bu sınıfı “final” olarak nitelendirmek isteyebilirsiniz. – jotik