how to define a template class inherit from template class ?
I want to wrap std::queue and std::priority_queue to a base class. In my case is LooperQueue. I use StdQueue in this way auto queue = new StdQueue<LooperMessage *>().
my class define compiler complain
error log:
In file included from /Users/rqg/ASProjects/PboTest/muses/src/main/cpp/Painter.cpp:10: /Users/rqg/ASProjects/PboTest/muses/src/main/cpp/util/StdQueue.h:14:5: error: unknown type name 'size_type'; did you mean 'size_t'? size_type size() override; ^~~~~~~~~ size_t /Users/rqg/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/5.0.300080/include/stddef.h:62:23: note: 'size_t' declared here typedef __SIZE_TYPE__ size_t; ^ In file included from /Users/rqg/ASProjects/PboTest/muses/src/main/cpp/Painter.cpp:10: /Users/rqg/ASProjects/PboTest/muses/src/main/cpp/util/StdQueue.h:16:5: error: unknown type name 'reference' reference front() override; ^ /Users/rqg/ASProjects/PboTest/muses/src/main/cpp/util/StdQueue.h:20:21: error: unknown type name 'value_type'; did you mean 'ARect::value_type'? void push(const value_type &x) override; ^~~~~~~~~~ ARect::value_type /Users/rqg/Library/Android/sdk/ndk-bundle/sysroot/usr/include/android/rect.h:44:21: note: 'ARect::value_type' declared here typedef int32_t value_type; code:
#ifndef PBOTEST_LOOPERQUEUE_H #define PBOTEST_LOOPERQUEUE_H #include <queue> #include <cstdlib> template<typename Tp, typename Sequence = std::deque<Tp> > class LooperQueue { public: typedef typename Sequence::value_type value_type; typedef typename Sequence::reference reference; typedef typename Sequence::const_reference const_reference; typedef typename Sequence::size_type size_type; typedef Sequence container_type; virtual size_type size() = 0; virtual reference front() = 0; virtual void pop()= 0; virtual void push(const value_type &x) = 0; }; #endif //PBOTEST_LOOPERQUEUE_H #ifndef PBOTEST_STDQUEUE_H #define PBOTEST_STDQUEUE_H #include "LooperQueue.h" template<typename Tp, typename Sequence = std::deque<Tp> > class StdQueue : public LooperQueue<Tp, Sequence> { public: size_type size() override; reference front() override; void pop() override; void push(const value_type &x) override; private: std::queue<Tp, Sequence> mQueue; }; #endif //PBOTEST_STDQUEUE_H
usinginstead of typedef". is there more detail