私のコードは以下のようになります。unordered_set <MyClass>へのポインタをmyClassの一部として持つことは可能ですか?
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 delcarationの前にこれを置くと、k.hash()は未定義です(ノード:public bitset <は宣言できません)。これをクラス宣言の後に置くと、クラスNodeのハッシュ関数がないというエラーが発生します。
どうすればこの問題を解決できますか?
'ハッシュ {}'前に 'クラスノードを{}'宣言からあなたを停止し、定義は何 'size_tのハッシュ ::演算子()'その後:誰かが、それはこのようなコードを必要とする場合は? –
Frank
'Node'も基本クラス' std :: bitset'も 'hash'という名前のメソッドを持っていません。あなたはおそらく、 'return std :: hash>()(k); –
@IgorTandetnik私はビジュアルスタジオ2015を使用しており、bitsetはhash()という関数を持っています –