SORU
9 ŞUBAT 2011, ÇARŞAMBA


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
9 ŞUBAT 2011, ÇARŞAMBA


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!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kassem G

    Kassem G

    25 EKİM 2006
  • Submissions101

    Submissions1

    23 ŞUBAT 2007
  • TheDroidDemos

    TheDroidDemo

    15 ŞUBAT 2011