Хеш-функция для определенного пользователем класса. Как подружиться? :)

У меня есть класс С, который имеетstring* ps личный член данных.

Сейчас я'хотел бы иметьunordered_map для которого мне нужна пользовательская хеш-функция.

По ссылке c ++Я могу сделать это как

namespace std {
  template
  class hash {
  public:
    size_t operator()(const C &c) const
    {
      return std::hash()(*c.ps);
    }
  };
}

Проблема в том, что я могукажется, сделатьoperator() а такжеC друзья, чтобы я мог получить доступ.ps

Я попробовал это:

class C;
template
class std::hash;
class C{
  //...
  friend std::hash::operator ()(const C&) const; // error: Incomplete type 
};
// define hash here.

но это говорит о том, что Incomplete type ... в спецификаторе вложенного имени ...

Я могу'Поверните определения также, потому что, если класс C определен позже,hash не имеет возможности узнать о.ps

Что я здесь не так делаю? Как можно исправить эту ситуацию, не делаяps общественности?

Ответы на вопрос(2)

Ваш ответ на вопрос