是否可以将指向unordered_set <myclass>的指针作为myClass的一部分?

时间:2017-01-02 16:09:56

标签: c++ class hash unordered-set

我的代码看起来像这样:

class Node : public bitset<BITS_COUNT> {
public:
    Node(string s) : bitset<BITS_COUNT>(s) {}
    void setGroup(unordered_set<Node>* newSet) { currentGroup = newSet; }
    unordered_set<Node>* getCurrentSet() { return currentGroup; }
private:
    unordered_set<Node>* currentGroup = nullptr;
};

但是编译器不允许我这样做,因为没有为类Node定义散列函数。我希望它能从基类中使用哈希函数,所以我这样做了:

namespace std
{
    template<>
    struct hash<Node>
    {
        size_t operator()(const Node& k) const
        {
            return k.hash();
        }
    };
}

但它仍然无效。如果我在Node delcaration之前放置它,k.hash()是未定义的(并且我无法转发声明Node:public bitset&lt;&gt;因为它不可能)。如果我把这个后类声明放进去,我会得到错误,即类Node没有散列函数。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

谢谢Frank,您的评论实际上是我的解决方案。如果有人需要代码,它看起来像这样:

beforeShowDay: tratarDiasEspeciales,

function tratarDiasEspeciales(date){
   ajax call to decide the colour of the cell

   if(condition){
      //colour the day with blue
      return[true,'blue']
   }else{
     //colour the day with red
     return[true,'red']
   }
}