如何使方法名稱(此處爲some_method
)爲模板參數?C++方法名稱作爲模板參數
template<typename T>
void sv_set_helper(T& d, bpn::array const& v) {
to_sv(v, d.some_method());
}
如何使方法名稱(此處爲some_method
)爲模板參數?C++方法名稱作爲模板參數
template<typename T>
void sv_set_helper(T& d, bpn::array const& v) {
to_sv(v, d.some_method());
}
沒有「模板標識符參數」這樣的東西,所以您不能將名稱作爲參數傳遞。然而,你可能需要一個成員函數指針作爲參數:
template<typename T, void (T::*SomeMethod)()>
void sv_set_helper(T& d, bpn::array const& v) {
to_sv(v, (d.*SomeMethod)());
}
這是假設的功能有void
返回類型。你會這樣稱呼它:
sv_set_helper< SomeT, &SomeT::some_method >(someT, v);
下面是一個簡單的例子...
#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謝謝,你在K-ballo之前有'。* f'部分,但他的回答是第一個。 –
謝謝!將T :: * SomeMethod放在括號內可以使此解決方案有效。 –