已经看过许多具有模板化函数指针的例子。这里有一个例子template and typedef。我无法找到函数指针用于类实例的任何示例,该类实例是模板类。例如
namespace xyz{
template <class T>
class TemplateClass{
typedef std::string (*ParameterlessFunctionPointer)();
}
}
如何在不同的类中定义ParameterlessFunctionPointer
的实例?
答案 0 :(得分:0)
如果要在多个类中定义,那么typedef应该在模板类的范围之外声明,并且只在xyz中声明。如果该类是typedef的唯一用户,则typedef实际上只放在一个类中。
答案 1 :(得分:0)
std::string foo()
{
return "foo";
}
由于ParameterlessFunctionPointer
不依赖于模板参数,因此您可以使用:
xyz::TemplateClass<int>::ParameterlessFunctionPointer ptr1 = &foo;
xyz::TemplateClass<double>::ParameterlessFunctionPointer ptr2 = &foo;
答案 2 :(得分:0)
这样的事情:
xyz::TemplateClass<int>::ParameterlessFunctionPointer fn = &some;
或者如果另一个类也是模板:
template <typename T>
struct OtherTemplateClass
{
typename xyz::TemplateClass<T>::ParameterlessFunctionPointer fn_member;
};
为了缩短它,你可以根据需要使用typedef ......