Для использования шаблона класса требуется список аргументов шаблона

Вопрос:Я переместил реализацию методов из своего класса и обнаружил следующую ошибку: use of class template requires template argument list для метода whitch не требуется тип шаблона вообще... (для других методов все нормально) Класс template class MutableQueue { public: bool empty() const; const T& front() const; void push(const T& element); T pop(); private: queue queue;

Вопрос:

Я переместил реализацию методов из своего класса и обнаружил следующую ошибку:

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 { … }

Оцените статью
Добавить комментарий