zoukankan      html  css  js  c++  java
  • 类模板中函数的声明与定义放在.h和.cpp中的问题

    今天写一个模板类,用MingW翻译,出现undefined reference to `RBTreeNode<int, int>::RBTreeNode.....

    RBTreeNode是一个模板类,可以见后面的代码。其声明放在了.h中,定义放在了.cpp中。

    main.cpp引用BRTreeNode类的构造函数,出现Link Error.

    简单分析一下:

    共有三个文件RBNode.h,RBNode.cpp,main.cpp

    其中RBNode.cpp include BRNode.h

    main.cpp引用RBNode.h

    由于main.cpp只能看见RBNode.h中的模板方法,在实例化的时候,BRNode.cpp还是undefined,因此就出现了,这个undefined reference错误,解决的方法是

    main.cpp

    加入#include "RBNode.cpp"即可解决这个问题

    代码定义如下:

    Code
    Code
    Code

    总结:

    1.在使用以.h,.cpp分离实现模板类时,不能像使用普通类一样只简单的包涵.h头文件,应该在使用模板类的cpp文件中引入模板类相应的cpp文件
    2.将模板类的声明与实现都放在.h中(在多个cpp中使用不同模板参数时可能会引起重复定义的编译错误)

  • 相关阅读:
    grape入门
    半个小时写的一个二叉搜索树,实现了增,删,查功能
    Struts2 MVC 同 Spring MVC 的比较
    阿里巴巴 2016 java 实习岗位笔试题(昨天出炉)
    自己用20分钟java实现的单向链表(含有增删改查操作)
    关于 古人劝学 --写的真心是好 真的有收获
    JDK动态代理堆栈图详解--干货
    论闷声挣大钱与网红现象
    spring beanfactory --实现自己简单的 bean工厂类
    Spring IOC example one
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1540276.html
Copyright © 2011-2022 走看看