![](/img/trans.png)
[英]Using a C++ class member function as a C callback function
[英]Using function as class member in C++
我来自Java,虽然我对C ++和C有所了解,但并不深入。 我正在创建哈希表类,它将封装存储值和键。 但是问题是,例如在构造函数自定义函数中传递哪种更好的方法,该函数将在表中计算哈希键。
在Java中,我将使用函数(接口)将其设置为类成员。 在C ++中使用函数指针作为成员的最佳实践是什么? 请建议如何实施。
C ++的做法是使用可计算类型的可调用类型对您的类进行参数化:
template<class Key, class Value, class Hash> class hashtable;
这允许将任何可调用对象用作您的哈希函数,无论是普通函数还是函子对象。
然后在构造函数中传递可调用对象:
template<class Key, class Value, class Hash>
class hashtable
{
hashtable(Hash h);
};
这使您可以指定不同的哈希函数,而无需创建新类。
最后,为了使hashtable
的声明和构造更加方便,我们指定默认模板参数和构造函数参数:
template<class Key, class Value, class Hash = std::hash<Key> >
class hashtable
{
hashtable(Hash h = Hash());
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.