Özel şablon sınıfındaki tip olmayan şablon parametrelerinin değerlerine erişmek mümkün mü? Ben uzmanlaşma ile şablon varsa sınıfıÖzel şablon sınıfındaki tip olmayan şablon parametrelerinin değerlerine erişmek mümkün mü?
:
template <int major, int minor> struct A {
void f() { cout << major << endl; }
}
template <> struct A<4,0> {
void f() { cout << ??? << endl; }
}
ben o yukarıdaki durum biliyorum değerleri 4 ve 0 yerine kullanarak değişkenleri ama ne ben uzmanlaşmış ediyorum daha büyük bir sınıf var kodlamalısınız basittir ve değerlere erişebilmek istiyorum.
< 4,0>major
ve minor
değerlerine (4 ve 0) erişmek mümkün mü? Ya da sabitler olarak şablon örneği başlatıldığında onları atamak zorunda yapın: gerçekten
template <> struct A<4,0> {
static const int major = 4;
static const int minor = 0;
...
}
Değerlere göre uzmanlaşıyorsanız, bu özel değerler hakkında özel bir şey olduğunu ima eder. Bunları şablonun genelinde genel değerler olarak kullanıyor ve yalnızca birkaç yerde özel olarak ele alıyorsanız, özel davranışı daha büyük bir uzmanlık sınıfı şablonuna ayırabilmeniz, büyük şablonu tamamen jenerik ve uzmanlık dışı bırakabilirsiniz. Söylemesi biraz zor, bu yüzden sorunuzu 'gerçek' olmak için genişletebilir misin? –
Sanırım soru yeterince gerçek. Protokol versiyonuna dayanan spesifik davranışı uygulayan mevcut temel sınıfım var. Daha önce protokol versiyonunu döndüren bir üye vardı - bu üye artık mevcut olmadığı için çıktıda protokol versiyonunu içeren bir kayıt yöntemi vardı. Değerleri sadece kodlayabilirdim ama daha iyi bir yol olup olmadığını öğrenmek istedim. Kabul edilen cevap, bunu yapmanın iyi bir yolunu sunuyor - Aslında diğer yerlerde benzer şekilde özellikleri kullanıyorum - parametre türlerini almak için ama niyet aynı. – stefanB