SORU
4 Aralık 2010, CUMARTESİ


Eceksin değil, miras std::vector

Tamam, bu gerçekten zor itiraf etmektir, ama şu an güçlü bir günaha var std::vector ' devralır.

Vektör için 10 özel algoritmalar ihtiyacım var ve bunları doğrudan vektör üyesi olmak istiyorum. Ama doğal olarak da std::vector's arayüzü. geri kalanını vermek istiyorum Aslında ilk düşündüğüm şey, yasalara saygılı bir vatandaş olarak, MyVector Sınıf std::vector bir üyesi oldu. Ama sonra el ile std tüm reprovide olurdu::vektör arabirimi. Yazın için çok fazla. İleri yöntemler reproviding yerine using std::vector::memberBir avuç'nin kamu bölümünde. yazardım böylece özel miras düşündüm, Bu çok can sıkıcı aslında.

Ve işte buradayım, ben gerçekten sadece halka std::vector, devralır ama bu sınıf kullanılmamalıdır belgelere bir uyarı polymorphically sağlayabilirim. Çoğu geliştirici bu zaten polymorphically kullanılması gerektiğini anlamak için yeterli sanırım.

Benim kararım kesinlikle haksız mı? Eğer öyleyse, neden? Ek üye olan bir alternatif sağlayabiliraslındaüyeler ancak vektör arabirimi tüm yeniden yazmak anlamına gelmeyecektir? Sanmam, ama eğer yapabiliyorsanız, sadece mutlu olacağım.

Ayrıca, bazı salak gibi bir şey yazabilirsiniz gerçeği dışında

std::vector<int>* p  = new MyVector

başka yokgerçekçiMyVector kullanarak tehlike? Gerçekçi söyleyerek ben şey gibi vektör için bir işaretçi alır bir işlevi atmak hayal ...

Eh, benim durumumda belirttim. Ben günah işledim. Beni affetmeni ya da değil :) şimdi

CEVAP
4 Aralık 2010, CUMARTESİ


Aslında, hiçbir şey std::vector ortak miras terslik yok. Eğer bu gerekiyorsa yap.

Eğer öyle ise bunu öneririmgerçektengerekli. Eğer ücretsiz işlevleri (örneğin, bazı devlet tutmalı) ile bunu yapmak için değil sadece.

Sorun MyVector yeni bir varlık olmasıdır. Yeni C geliştirici yok canım ne kullanmadan önce bilmeniz gereken anlamına gelir. std::vector MyVector arasındaki fark nedir? Hangisi orada burada kullanmak daha iyidir? Eğer MyVector 12 *taşımak için ihtiyacım olursa? Sadece swap() veya kullanabilir miyim?

Yeni varlıklar sadece daha iyi görünmek için bir şeyler yapmak, üretmek değil. Bu varlıklar (özellikle) yaygın vakum yaşamak için gitmiyor. Sürekli artan entropi ile karışık ortamda yaşayacaklar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hydejiaqi

    hydejiaqi

    12 Mart 2008
  • ::..ηєѕѕ мιχ..::

    ::..ηєѕѕ

    15 Aralık 2006
  • RiverCityGraphix

    RiverCityGra

    6 Ocak 2012