0
#ifndef _QUEUE_HPP
#define _QUEUE_HPP
#include <iostream>
#include "Node.hpp"

namespace std{
  
  template<typename T>
  class Queue{
    public:
    class Node<T>* front;
    class Node<T>* rear;
    Queue();
    void enqueue(T data);
    T dequeue();
    ~Queue();
    template<class U>
    friend std::ostream& operator<<(std::ostream& out,Queue<U> const& queue);
  };
  template<class classT>
    std::ostream& operator<<(std::ostream& out,Queue<classT> const& queue);

  template class Queue<double>;
  
  template std::ostream& operator<<(std::ostream& out,Queue<double> const& queue);
}
#endif

Compile result

g++ -std=c++11 main.cpp Stack.o Queue.o -o test

In file included from main.cpp:2:0:

Queue.hpp: In instantiation of ‘std::ostream& std::operator<<(std::ostream&, const std::Queue<classT>&) [with classT = double; std::ostream = std::basic_ostream<char>]’:

Queue.hpp:25:81:   required from here

Queue.hpp:25:81: error: explicit instantiation of ‘std::ostream& std::operator<<(std::ostream&, const std::Queue<classT>&) [with classT = double; std::ostream = std::basic_ostream<char>]’ but no definition available [-fpermissive]

 mplate std::ostream& operator<<(std::ostream& out,Queue<double> const& queue);


Problem:
What happens with my code? I believe I have template operator<<being defined but the compiler can't find a definition.

Erikir
  • 1
  • 2

0 Answers0