如何使用自己写的头文件?c++ 类

sjk1996 2016-11-17 10:27:46
我写了一个顺序栈的类,又写了一个表达式括号匹配的函数,函数用顺序栈这种数据结构存储左括号以达到括号匹配的目的。
但是我不想把类和函数放在一个文件里,显得比较乱,于是我把类放进头文件,把函数放进源文件里,如下图:




然后在函数的cpp文件里用了# include"SeqStack",但是程序提醒我无法打开文件SeqStack,是哪里出了问题?
正确方法是什么呢?
...全文
1237 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_45495009 2019-08-05
  • 打赏
  • 举报
回复
还不如#include<bits/stdc++.h>好用
lsfv001 2016-11-18
  • 打赏
  • 举报
回复
个人感觉模板特别,还是为了编译快吧,只看到定义,调用文件一样可以进行编译,但是轮到模板实现开始编译,就有问题了,无法确定需要多少T的版本,所以干脆让调问文件,就地生成一份确定T的代码,
小灸舞 2016-11-18
  • 打赏
  • 举报
回复
模板函数的定义和声明须在同一文件内 按照C++中代码的惯例,类声明在h文件中,类定义在cpp文件中,相应的成员函数声明也在h文件中,定义在cpp文件中。但是如果这样的架构用在模板函数中,在调用模板函数的地方链接器便会报错,error LNK2001: unresolved external symbol。将定义写在与声明相同的文件中问题解决,解释如下: “大部分编译器在编译模板时都使用包含模式。也就是一般使用的把模板放到头文件中再包含。 当你不使用这个模版函数或模版类,编译器并不实例化它。当你使用时,编译器需要实例化它。因为编译器是一次只能处理一个编译单元,也就是一次处理一个cpp文件,所以实例化时需要看到该模板的完整定义,所以都放在头文件中。 这不同于普通的函数,在使用普通的函数时,编译时只需看到该函数的声明即可编译,而在链接时由链接器来确定该函数的实体。”
赵4老师 2016-11-18
  • 打赏
  • 举报
回复
模板是语法糖。 语法糖越甜,编译调试查错越苦! 把有限的生命浪费在品尝/品鉴无穷多种的语法糖中,我认为不值当。
litchgu 2016-11-17
  • 打赏
  • 举报
回复
引用 3楼火上木 的回复:
[quote=引用 2 楼 litchgu 的回复:] 头文件的话只要把.cpp改成.h就行了啊,如果检测不到你可以添加绝对路径啊,比如#iinclude "C:\Program Files (x86)\NVIDIA Corporation\NVIDIA GeForce Experience.h"。
可以在哪里设置相对路径吗?绝对路径有失美观啊[/quote]这个要看你编译器了啊
paschen 版主 2016-11-17
  • 打赏
  • 举报
回复
paschen 版主 2016-11-17
  • 打赏
  • 举报
回复
类模板不支持分离编译,你需要放到一个文件里
火上木 2016-11-17
  • 打赏
  • 举报
回复
引用 2 楼 litchgu 的回复:
头文件的话只要把.cpp改成.h就行了啊,如果检测不到你可以添加绝对路径啊,比如#iinclude "C:\Program Files (x86)\NVIDIA Corporation\NVIDIA GeForce Experience.h"。
可以在哪里设置相对路径吗?绝对路径有失美观啊
litchgu 2016-11-17
  • 打赏
  • 举报
回复
头文件的话只要把.cpp改成.h就行了啊,如果检测不到你可以添加绝对路径啊,比如#iinclude "C:\Program Files (x86)\NVIDIA Corporation\NVIDIA GeForce Experience.h"。
lsfv001 2016-11-17
  • 打赏
  • 举报
回复
.h -> head .cpp

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧