I have a class, which stores items in an std::unordered_map. The key for the map is a custom type, so I have a helper struct defined as follows:
struct hash_equ {
// Hasher
size_t operator()(myType const &val) const;
// Equality comparer
bool operator()(myType const &a, myType const &b) const;
};
Then, within the class declaration, I have the following:
class Foo {
private:
typedef std::unordered_map<myType const &, int, hash_equ, hash_equ> map_type;
map_type _myMap;
...
};
The problem is that I want to hide the existence of hash_equ
from code outside Foo.cpp, but hash_equ
must be defined in Foo.h in order to declare the member Foo::_myMap
. The only idea I could come up with is to declare hash_equ
as a private, inner class of Foo
. However, in C++11, doing so would grant access to Foo
private members to hash_equ
. Is there some way to hide hash_equ
from the client while also preventing access to Foo
's private members?
Aucun commentaire:
Enregistrer un commentaire