c++ - 如何轻松实现成员函数作为模板参数?

标签 c++ templates

我想开发一个容器,它可以使用属性访问成员函数(例如 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/

相关文章:

c++ - 如何在没有 2^n if 语句的情况下启动具有许多 bool 参数的函数模板

c++ - 强制 g++ 归零初始化内存

c++ - 有一个空捕获列表的 lambda 不能默认构造的原因吗?

c++ - 如何使用 SQLite 在 qt 中创建表?

c++ - 在关闭套接字之前发送数据包

c++ - 在 C++ 中,访问说明符不控制静态成员的可见性吗?

c++ - 是否可以在类定义之外以某种方式提供相当于 operator bool cast 的东西?

python - python中的模板

java - 需要更好的模板语言

c++ - 具有不同参数的函数容器