2008-11-11 48 views

cevap

18

O türü beri yapmanız, bu hattın önünde typename koymalıyız :: yineleyici bu gibi şablon parametre T. bağlıdır üzerine:

template< class T > 
void example() { 
    typename std::list< boost::function<T()> >::iterator it; 
} 

hattını düşünün

std::list< boost::function<T()> >::iterator * it; 
Bir çarpma veya bir işaretçi anlamına gelebilen

. Bu yüzden niyetinizi netleştirmek için typename'a ihtiyacınız var. Bu olmadan, derleyici bir tür olmadığını varsayar ve bu nedenle bir operatör veya sözdizimsel olarak bir noktalı virgül gerektirir. Ayrıca, yeni C++ SSS girişine Where to put template and typename on dependent names danışarak da görüşebilirsiniz.

İlgili konular