Geri döndürülen kesinliği iki katına çıkarmak için herhangi bir yol var mı (taşmayı önlemek için)?"Uzun T" olmak için C++ şablon tip T'yi değiştirin.
template<class T> class MyClass {
T multiply (T a, T b) { return a * b; }
}
şey gibi:
long T multiply (T a, T b) { return a * b; }
Yani 'int', 'uzun' veya 'çift' verildi olsun ki bir 'uzun int', uzun' 'uzun uzun', ya da çift 'çarpılarak iade edilir.
Bu genel bir sorudur. İçinde bir çift kullanarak etrafta çalışıyorum. Ama sorum şu: C++ 'daki "uzun" varyantına bir tür tanıtmak için herhangi bir mekanizma var mı?
template<typename T>
struct add_long { typedef T type; };
template<>
struct add_long<int> { typedef long int type; };
template<>
struct add_long<double> { typedef long double type; };
template<>
struct add_long<long int> { typedef long long int type; };
// And so on...
Bu, ders esnasında kullanılırsa şekli şöyledir:
Bu taşma kaçınmak istiyorsanız sadece 'T olarak 'uzun long' kullanmak daha iyi olacaktır. – Pubby
'long', bir tür adına uygulanabilecek bir niteleyici değildir; 'long int',' long' ve 'int' adlı iki anahtar kelimeyle hecelenen bölünmez bir tiptir. –
Neden "uzun T" kullanmak istediğinizi anlamıyorum. T, bir şablon parametresidir ve uzun sürdüğünüz gibi, ilkel tür veya nesne örneğini istediğiniz gibi olabilir * operatör geçersiz kılınır. Bazı durumlarda T'yi uzun süre kullanabilirsiniz. – user1929959