2014-10-17 30 views
5

Şablonları kullanarak bir işlev işaretçisi türü tanımlamak istiyorum. Ancak, VS 2013 bana 'typedef bir şablon yasadışı'. Böyle bir şey yazmaya çalışıyorum: hata C2823: bir typedef şablonu yasadışı - işlev göstergesi

template<typename SD> 
typedef void(*FuncPtr)(void *object, SD *data); 

Ne yazık ki bu derleme değil. Bu şeyi kısa tutmak isterim. Temel olarak, argümanı bir şablon sınıfında olan bir işlev işaretçisi için bir tür tanımlamamız gerekiyor.

+0

(C++ gibi) dil etiketi ekleyin ve böylece herkes bu ques bulabilirsiniz siyon. – CandiedOrange

+0

Bitti, teşekkürler! – alias5000

cevap

7

C++ 11 olduğundan, typedef gibi çok bir etki için using anahtar kelimeyi kullanabilir ve bu şablonlar sağlar: Bundan önce

template<typename SD> 
using FuncPtr = void (*)(void*, SD*); 

, sen typedef şablonu ayırmak zorunda:

template<typename SD> 
struct FuncPtr 
{ 
    typedef void (*type)(void*, SD*); 
}; 

(ve tür adı FuncPtr<U>::type yerine sadece FuncPtr<U> olan)

+0

Bahşiş için teşekkürler! – bvj

İlgili konular