2016-04-05 21 views
-1

Dizelerde bir vektör döndüren bir sınıfta bir yöntem var. Yeterince basit. Ama bazen bütün dizenin geri gelmesini, açılmamasını ister misin? Ama aynı yöntemi kullanarak.C++ sınıf yöntemi farklı türleri döndürmek için

Verileri alan yöntem oldukça karmaşık olduğundan, şu anda ham dizeyi döndürmek için yöntemi kullanıyorum, ardından gerekiyorsa bir vektöre ayrıştırın. Ya da metodu sadece farklı bir getiri türü ile çoğaltmak isteseydi.

Tek bir yöntem kullanarak bunu yapmak için daha zarif bir yolu var mı?

+0

Bu biraz çirkin, ancak her iki türü de barındırabilecek bazı yapılar mı? Burada anlattığınız şey tasarım aşamasında bir başarısızlık gibi geliyor, bu yüzden konuyu tamamen ortadan kaldırana kadar çalışmaya devam ediyorum. – tadman

+0

@tadman sendikaları kurucularla çalışmaz, bunları yalnızca POD – sashoalm

+0

ile kullanabilirsiniz. Burada 'zarif çözüm' yoktur. Diğer işlevlerde sonuç türünün işlevini sınamanız gerekir, yani dize veya daha fazla işlemek için dize vektörüdür –

cevap

1

Üzgünüm çocuklar, bunu yayınladıktan sonra, nasıl yapılacağını anladım. Verileri özel hale getiren karmaşık yöntemi yapın, onu çağıran iki genel yöntem ayarlayın ve farklı türler döndürün. Asıl nokta, dönüşüm diziliminden diziden vektöre dönüşümü tutmaktı. Sınıfta saklanacak.

Bazen sorunlar hakkında konuşmanıza yardımcı olur. Sadece bunun üzerinde çalışıyorum ve konuşacak kimse yok.

Teşekkürler çocuklar, inanın ya da inanmayın, hatta bilmeden yardımcı oldunuz.

+0

Bu bir forum değildir, ancak. Programlamak için olsa bile, sadece bir konuşma yapmak istiyorsanız yanlış yer burasıdır. Bunun için sohbet odalarını denemelisiniz. – sashoalm

1

Genellikle, yalnızca dönüş türüne göre farklılık gösteren aynı ada sahip iki fonksiyona sahip olmak mümkün değildir. Dar anlamda aşağıdaki ana olanakları bu sınırlamaya geçici bir çözüm bkz

  • sorun bu tür için genel bir çözelti fonksiyonu bir yan etkisi olarak değiştirilir bağımsız değişkenler olarak referans sahip olmaktır. Gerçek dönüş değeri, basit bir bool veya başarıyı gösteren bir tamsayıdır. Burada başlangıçta boş bir vektöre bir referans gönderirsiniz; dizenin ayrıştırılıp ayrıştırılıp ayrılmayacağı veya boole dönüş değeriyle gösterilip gösterilmeyeceği ve ayrıştırmanın sonuçlarının - eğer olduysa - başvurulan vektöre konulacağı.
  • Bir vektörü daha önce olduğu gibi geri dönün; Boş bir vektör, ayrıştırma olmadığını gösterir. Bu çözüm, ham dizgeye arayan tarafından erişilebildiğini gösterir, örneğin dizeyi elde etmek ve ayrıştırmak iki işlevde ayrılmıştır.

Daha geniş anlamda, bu yalnızca algıladığınız gibi bir tasarım sorunudur. Denetimin gerekli olduğunu göstermesi halinde - inceleyebilir, inceleyebilirsiniz - verileri hangi aşamada işleyeceğinizi ve her noktada verilerle ne yapacağınızı bilmeniz için verileri ayrı adımlarla ayrıştırın. Divide et impera, programlamadaki Tao.

+0

Sadece dönüş tipi ile farklılık gösteren iki fonksiyona sahip olmak mümkündür, derleyici aralarında otomatik olarak seçim yapamaz. Sadece bir uygulamayı, dönüş türünde şablonlandırılmış bir şablon işlevi olarak tanımlayın. Sonra farklı bir uygulama ile diğer dönüş tipi için bir uzmanlık tanımlayın. – joelw

+0

Bu korkunç ve ** ** asla yapılmamalıdır. – joelw

+0

@joelw Önerilerimden birine başvuruyor musunuz? Eğer öyleyse, hangisini ve neden bu kadar korkunç buluyorsunuz? –

İlgili konular