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

  • ItZWaffleS420

    ItZWaffleS42

    9 EYLÜL 2011
  • Rockstar Games

    Rockstar Gam

    17 ŞUBAT 2006
  • Sam Kear

    Sam Kear

    14 Temmuz 2007