我想开发一个容器,它可以使用属性访问成员函数(例如 Name())对其元素进行排序。我想按如下方式使用它
SortedVector<T, &T::Name> v;
T t;
v.Add(t);
v.FindElementWithName("AName");
如何声明模板类?非常感谢。
最佳答案
除非您只允许一种函数结果类型,否则没有允许您设想的简单用法的声明。
有了这个限制,你可以做例如
template< class Item, std::string (Item::*)() const >
class SortedVector;
但更一般地(不支持简单表示法)你可以做
template< class Item, class Result, Result (Item::*)() const >
class SortedVector;
无论如何,主要问题是如何利用标准库的类。
我想我可能会使用 std::vector
进行存储,使用 std::map
进行排序。
关于c++ - 如何轻松实现成员函数作为模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14088607/