テンプレートの型として実装されるクラスQueue
があります。型のパラメータとキューのサイズの定数パラメータがあります。定数パラメータを持つときのテンプレートの特殊化
template <typename T, int N>
class Queue
{
.....
void enqueue(T x);
}
私は型名のために、enqueue
方法を専門にしたいが、私はこれを行う方法を見つけ出すことはできません。クラス全体を専門とするため
template <typename T, int N>
void Queue<Heap<struct infoNod>, N>::enqueue(Heap<struct infoNode> x)
{}
私は、私は右のそれを行う場合ではないと確信しています: ヘッダーに:
template <>
class Queue<Heap<struct infoNode>, 100>
{
public:
void enqueue(Heap<struct infNode> x);
};
CPPに:
template <>
void Queue<Heap<struct infoNod>, 100>::enqueue(Heap<struct infoNode> x) {}
エラーを:
Queue.cpp:77:6: error: template-id ‘enqueue<>’ for ‘void Queue<Heap<infoNod>, 100>::enqueue(Heap<infoNode>)’ does not match any template declaration
void Queue<Heap<struct infoNod>, 100>::enqueue(Heap<struct infoNode> x)
^
Queue.cpp:77:78: note: saw 1 ‘template<>’, need 2 for specializing a member function template
void Queue<Heap<struct infoNod>, 100>::enqueue(Heap<struct infoNode> x)
あなたが唯一のメンバ関数を特化することはできません、あなたがクラス全体を特化する必要があります。または、 'Queue、N>'から継承し、 'enqueue'関数だけをオーバーライドする派生クラスを作成してください。 –
私はクラスを編集しようとしました。 –
あなたは 'Queue'を意味すると思います。そうでなければ、エンキュー関数は 'Queue >、100>'をパラメータとして受け入れるでしょう。 –