构建模板类使用的模板函数时,显式实例化但没有定义可用

问题描述

#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

编译结果

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

在 main.cpp:2:0 包含的文件中:

Queue.hpp:在‘std::ostream& std::operator&)的实例化中[with classt = double; std::ostream = std::basic_ostream]':

Queue.hpp:25:81:从这里需要

Queue.hpp:25:81: 错误:显式实例化‘std::ostream& std::operator&) [with classt = double; std::ostream = std::basic_ostream]' 但没有定义可用 [-fpermissive]

mplate std::ostream& operator const& queue);


问题:
我的代码会发生什么?我相信我有模板运算符

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)