Yöntem adını (burada some_method
) şablon parametresini nasıl yapabilirim?C++ yöntem adı şablon parametresi olarak
template<typename T>
void sv_set_helper(T& d, bpn::array const& v) {
to_sv(v, d.some_method());
}
Yöntem adını (burada some_method
) şablon parametresini nasıl yapabilirim?C++ yöntem adı şablon parametresi olarak
template<typename T>
void sv_set_helper(T& d, bpn::array const& v) {
to_sv(v, d.some_method());
}
'Şablon tanımlayıcı parametresi' diye bir şey yoktur, bu nedenle adları parametre olarak geçiremezsiniz. Bununla birlikte argüman olarak bir üye işlev işaretçisi olabilir: fonksiyonunu farz ediyor
template<typename T, void (T::*SomeMethod)()>
void sv_set_helper(T& d, bpn::array const& v) {
to_sv(v, (d.*SomeMethod)());
}
bir void
dönüş türüne sahip. Ve bunu böyle arayacak:
sv_set_helper< SomeT, &SomeT::some_method >(someT, v);
İşte basit bir örnek ...
#include <iostream>
template<typename T, typename FType>
void bar(T& d, FType f) {
(d.*f)(); // call member function
}
struct foible
{
void say()
{
std::cout << "foible::say" << std::endl;
}
};
int main(void)
{
foible f;
bar(f, &foible::say); // types will be deduced automagically...
}
+1 Teşekkürler, K-ballo'dan hemen önce. * F 'parçası vardı, ama cevabı ilk sıradaydı. –
teşekkürler! T :: * SomeMethod'u parantez içine koymak bu çözümü çalışır hale getirir. –