Farklı veri türlerinin çoklu argümanlarını kabul eden ve sayıların toplamını döndüren bir işlev yazmaya çalışıyorum. Toplam için hangi veri türünün kullanılacağına karar verebilmelidir. Örneğin Ekleme (3,1,2,3) yazarsam, toplamı int olarak döndürmelidir. Ancak, eğer (3,1,2,5,3,25) ekle yazarsam, toplamı bir çifte döndürmelidir.Değişken sayıların eklenmesi
Şablon kullanmayı denedim, ancak derleme zamanı hatası veriyordum. İşte fonksiyonu
template <typename T>
T add(int n, ...)
{
T sum = 0;
va_list vl;
va_start(vl,n);
for(int i=0;i<n;i++)
{
sum += va_arg(vl,T);
}
va_end(vl);
return sum;
}
int main()
{
std::cout<<add(3,1,2,3);
return 0;
}
Derleme Hatası şudur: 'ekleyin (int, int, int, int)' çağrısına için eşleşen fonksiyonu. Sanırım hata geliyor çünkü va_arg T'den geçtim, ama genelleştirilmek için başka ne geçeceğimi bilmiyorum. (Int n, ...)
kullanım T ekleyin::
Neden [Varidaic Templates] kullanmıyorsunuz (http: // www.cplusplus.com/articles/EhvU7k9E/)? –
Geçtiğimizde bu sorunu çözüyor argümanlar tamsayılar, ancak çift değerleri geçerken yanlış cevap veriyor. –
@DarshilBabel hayır, işe yarıyor. [** Canlı yayınlayın **] (http://ideone.com/ggLxjO) – WhozCraig