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

  • Andytokkallos

    Andytokkallo

    27 Kasım 2007
  • njhaley

    njhaley

    24 NİSAN 2006
  • vgeller1

    vgeller1

    22 Kasım 2009