Вопрос:
Я переместил реализацию методов из своего класса и обнаружил следующую ошибку:
use of class template requires template argument list
для метода whitch не требуется тип шаблона вообще… (для других методов все нормально)
Класс
template<class T> class MutableQueue { public: bool empty() const; const T& front() const; void push(const T& element); T pop(); private: queue<T> queue; mutable boost::mutex mutex; boost::condition condition; };
Неверная реализация
template<> //template<class T> also incorrect bool MutableQueue::empty() const { scoped_lock lock(mutex); return queue.empty(); } Лучший ответ:
Это должно быть:
template<class T> bool MutableQueue<T>::empty() const { scoped_lock lock(mutex); return queue.empty(); }
И если ваш код такой короткий, просто вставьте его, так как вы все равно не можете разделить реализацию и заголовок класса шаблона.
Ответ №1
Использование:
template<class T> bool MutableQueue<T>::empty() const { … }