写了3年多C++程序,很少用到模板,我靠,今天想试一下,照着别人的例子写,什么鬼,怎么都运行不过,仔细比对代码才发现,C++模板的声明与定义必须放到一个文件,.h或者.hpp, 真是颠覆我对C++编程的认知,什么坑爹的语法。网上找资料,看博客,看书,才知道必须这样写,太坑了。

例如我写的一个A 模板类,A.h文件:

#pragma once
#include <iostream>using namespace std;template<class T>
class A
{
public:A(T a);~A();void print();
private:T a;
};template<class T>
A<T>::A(T a)
{this->a = a;
}template<class T>
A<T>::~A()
{
}template<class T>
void A<T>::print()
{cout << this->a << endl;
}

template<class T>换成template<typename T>也可以。

注意:必须把方法的声明和实现都写到.h文件,如果把模板的方法写到.cpp就会运行报错

在main函

为什么C++模板声明与定义要放在同一文件中?相关推荐

  1. 【C++】模板函数的声明和定义必须在同一个文件中

    1.问题描述 习惯性的将函数的定义和实现,分别写在头文件和源文件(.cpp)中.今天也按照这个习惯实现了一个模板函数.然后编译时报错 ... error: undefined reference to ...

  2. 为什么模板函数的声明和实现都放在.h文件中

    当你不使用这个模板函数或模板类,编译器并不实例化它,当你使用时,编译器需要实例化它,因为编译器是一次只能处理一个编译单元,也就是一次处理一个cpp文件,所以实例化时需要看到该模板的完整定义.所以都放在 ...

  3. 为什么C++模板函数的声明与实现都放在.h文件中

    引用C++primer的话:C++支持两种模板编译模式包含模式(Inclusion   Model )和分离模式(Separation Model) 1. 包含编译模式 在包含编译模式下,在每个模板被 ...

  4. c++模板函数的声明和定义该在什么文件里?

    最近在写模板函数的时候,发现了一个问题. 按照江湖规矩我们的声明一般放在.h文件,定义放在.cpp文件. 而在写模板函数的时候,套用江湖规矩会出错. 解决方法:将模板函数的声明和定义都放在.h文件中. ...

  5. error LNK2005 --类的声明和定义放在一个文件中

    刷C++primer的时候,将类的声明和定义均放在头文件中,报错error LNK2005 1> Sales_data.h 1>Sales_data.obj : error LNK2005 ...

  6. c++模板声明与定义

    c++ 模板声明与定义 文章目录 c++ 模板声明与定义 前言 模板实例化 为什么C++编译器不能支持对模板的分离式编译 重点 C++模板代码的组织方式 --包含模式(Inclusion Model) ...

  7. 将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中

    将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中 写这种.h和.cpp文件分开的大程序,虽然对很多人来说很简单,对自己来说算是第一次吧,好好学C++,加油~ 题目:定义Point类,由 ...

  8. 将函数实现放在头文件中

    研究一个开源算法库,采用C++模板编程,所有函数实现都放在了头文件中,现在把模板去掉,链接时发生冲突,具体原因如下: 因为多个源文件包含了含有函数定义的头文件,在编译的时候,每个源文件都会包含一份函数 ...

  9. 函数声明放在头文件中,函数的定义放在实现文件中,然后在主函数中调用

    1.文件的组织结构如下图: 2.Menu.h内容如下: #ifndef MENU_H #define MENU_H int add(int a,int b); int minus(int a, int ...

最新文章

  1. JavaScript—ES6 元编程(5)
  2. [转载]玩转Asp.net MVC 的八个扩展点
  3. Pandas简明教程:六、Pandas条件查询
  4. 干货|为什么Kafka不支持读写分离
  5. 分布式存储与传统SAN、NAS的优、劣对比
  6. mysql root远程访问权限_mysql8.0 Server在Windows平台中的安装、初始化和远程访问设置...
  7. 【Linux】Linux 目录结构
  8. Docker实践4: 基于nginx对后端的weblogic负载均衡
  9. ZenHub Epics创造了GitHub中敏捷Epics
  10. FZU 1924——死锁——————【topo判环】
  11. dedecms channel php,DedeCMS在{dede:channel}标签前加序列号
  12. rank 开窗函数_开窗函数(分析函数)
  13. EasyUI整站示例系统-SyPro
  14. Python之itchat
  15. [UPC] 2021秋组队17
  16. [Mac] 为mac自带的QuickTime Player播放器设置快进快退
  17. 每日新闻丨阿里上市成港股第三大IPO,市值超腾讯;网易回应“暴力裁员”后股价下跌2.38%...
  18. AR VR MR 到底有啥区别?
  19. Mysql数据库轻松学06—数据分析师常用:数据查询语言DQL之单表查询
  20. 知名界面类控件Kendo UI for jQuery R2 2019 SP1发布|附下载

热门文章

  1. input按回车换行
  2. oracle存储回车换行,oracle中去掉回车换行空格的方法详解
  3. Python爬虫从入门到精通——解析库pyquery的使用
  4. 浅谈TabLayout的使用
  5. XTU OJ 2022 128题之字母圣诞树
  6. 【1106matlab学习】在三维空间里绘制两个曲面的交线
  7. 【IDE-Visual Studio】灾难性故障(异常来自 HRESULT 0x8000FFFF E UNEXPECT
  8. Oculus VR SDK实现 -主要结构体及Api接口设计
  9. 创新实训——飞讯(五)
  10. 为什么你的手机空间不足