2015-11-02 20 views
6

temel sınıf typedef erişme Türetilmiş sınıf şablonundan temel sınıftaki bir typedef üyesine erişmeye çalışıyorum. Şablon parametresinin şablon adında, temel sınıftaki typdef adıyla aynıdır.Türetilmiş sınıf şablonuna

#include <iostream> 

using namespace std; 
class no { 
    public : 
    typedef int T; 
}; 
template<typename T> class no1 : public no { 
    public : 
    T obj; 
}; 
int main() { 
    // your code goes here 
    no1<string> o ; o.obj = "1"; 
    return 0; 
} 

14:24: error: invalid conversion from 'const char*' to 'no::T {aka int}' [-fpermissive] 
    no1<string> o ; o.obj = "1"; 

Yukarıdaki kod T'nin nesnesi her zaman int'dir. Nes sınıf şablonunda değil de typdef olarak şablon parametresinde nasıl zorlayabilirim? Bu benim için çalışıyor

Teşekkür

+0

Yapamazsınız int' 'için T '' dan açık bir dönüşüm sağlamadan. Ayrıca, 'T' şablon parametresinin sadece _shadows_ 'no :: T' olduğunu, bunların ilgisiz olduğunu unutmayın. –

+0

Bu soru, temel sınıfını değiştirmeden veya şablon parametresini yeniden adlandırmadan T şablonu parametresine nasıl erişeceğimiz sorusudur? – noname

+0

Yine yapamazsın. –

cevap

0

:

template<typename T> class no1; 
template<typename T> 
struct underlying_type_of; 

template<typename T> 
struct underlying_type_of<no1<T> > 
{ 
    typedef T type; 
}; 
template<typename T> class no1 : public no { 
public : 
    typename underlying_type_of<no1>::type obj; 
}; 
İlgili konular