以下代码居然无法编译通过:
template<class _MSGTYPE,
class _CONTAINER = std::vector<_MSGTYPE>,
class _COMP = std::less<typename _CONTAINER::value_type> >
class pri_msg_queue : public std::priority_queue<_MSGTYPE, _CONTAINER, _COMP>
{
public:
const value_type& front() const {return top();}
void pop_front() {pop();}
void push_back(const value_type& iMsg) {push(iMsg);}
};
报错说value_type、top()、pop() 和 push() 都没定义,其实这些都是基类中的公有成员。非要写成这样:
template<class _MSGTYPE,
class _CONTAINER = std::vector<_MSGTYPE>,
class _COMP = std::less<typename _CONTAINER::value_type> >
class pri_msg_queue : public std::priority_queue<_MSGTYPE, _CONTAINER, _COMP>
{
typedef std::priority_queue<_MSGTYPE, _CONTAINER, _COMP> _BASE;
public:
typedef typename _BASE::value_type value_type;
const value_type& front() const {return _BASE::top();}
void pop_front() {_BASE::pop();}
void push_back(const value_type& iMsg) {_BASE::push(iMsg);}
};
那还要基类和派生干吗?干脆把基类直接作为一个成员算了。