Neden bir hata şablonu bir üye açık tür bir parametre ile fonksiyon çağırmak için çalışıyor alabilirim?
Anlamıyorum, f
çağrı tamamen net değil gibi geliyor bana, ama expected primary-expression before ‘int’
derleme başarısız olur. I f
, çağrı ile açýklama eğer iyi derler.
template<typename T>
struct A {
template<typename S>
void f() { }
};
template<typename T>
struct B : A<T> {
void g() {
this->f<int>();
}
};
CEVAP
Bunun nedeni bir çok karanlık hüküm standardı olan varsa bir şablon erişmeye çalıştığında bir şablon fonksiyonu olan bir nesnenin türüne bağlı bir şablon bağımsız değişken, kullanmanızı template
anahtar kelime bir garip şekilde
this->template f<int>();
Bu bağımlı türleri ile gelir typename
tuhaflık benzer işlevler için uygulamalı olarak hariç. Eğer dışarı template
anahtar kelime bırakırsanız özellikle, arasında ayrıştırma bir belirsizlik var
this->f<int>()
sizin istediğiniz (), ve
((this->f) < int) > ()
mantıksız (dolayısıyla hata) yapar. 14* *anahtar kullanımı burada ve şablon üye işlev yerine semboller bozuk bir kitle için son derece geçerli bir çağrı bakıyor tanımak derleyici ayırt zorlar.
Bu yardımcı olur umarım!
Neden aynı hat üzerinde anonim bir fon...
Neden apple-touch-icon-precomposed içi...
Neden boş bir liste için atama yapar (...
Neden imkansız, eş tarafından I/O, TCP...
&Quot;ifadesindeki İç hata değerlendir...