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

  • AverageBroTV

    AverageBroTV

    20 Mart 2013
  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • Just So

    Just So

    3 HAZİRAN 2007