微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

#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 举报,一经查实,本站将立刻删除。