[问题] 新手发问:请问大大们怎么写header file

楼主: nsa1099 (可鲁)   2017-09-06 18:03:12
小弟知道伸手牌很不好
但因为自学C++实在有点吃力
所以虚心上来请教大神们很基本的问题
小弟是在dev c++ 4.9.2的环境下做开发
如果有写一个表头档(header file)
"通常是将宣告式含入进去,之后在源码档再去做定义式"
例如我建一个新的表头档 "FunDeclare.h"
template <typename elemtype> //(1)
void display_message(const string&, const vector<elemtype>&); //(2)
我在表头档内做函式的宣告
但是编译器和我说没有 string 和 vector 的资料型态
即使我include了string和vector的libary还是编译错误
还在(2)行开头加了extern只做宣告还是一样错 0rz
1. 请问我这样宣告函式在表头档中有什么问题吗?
2. 还有想问的是各位大神们是否在建表头档的时候都要含入很多libary吗?
3. 有关template是不是每次在type的时候都要打出(1)这行阿?
即使前面曾经用过elemtype了。如果我后面有要在宣告其他函示,
仍要重新打一次"template <typename elemtype>"。有方法可以只要定义一次template吗?
感觉这些问题很新手,请大神们鞭小力点 qq
作者: hylkevin (19s)   2017-09-06 18:08:00
namespace?
作者: LPH66 (-6.2598534e+18f)   2017-09-06 18:12:00
1. namespace 问题, 所有标准的东西都在 std:: 下面然后提醒一下这里绝对不要 using namespace2. 是, 不过通常会尽量减少在 header 里引用的标头档3. 你不打那一行编译器就不知道你在做 template 宣告/定义
作者: stucode   2017-09-06 18:28:00
新手的话建议还是从一般函数练起 template实作要拆开放有时候还需要编译器支援或者显式具现化 这些问题可能会模糊你学习的焦点
作者: damody (天亮damody)   2017-09-06 18:29:00
先换ide
作者: rbufghj9713 (我只是来潜水)   2017-09-06 20:19:00
偷偷跟你说,string在std下
楼主: nsa1099 (可鲁)   2017-09-07 13:02:00
谢谢大大们的建议,可以run了,真的非常感谢
作者: Mistyshadowe (misty)   2017-09-07 19:36:00
想请问一下不要使用 using namespace 的原因是避免混淆吗?
作者: grayStone (灰色石头)   2017-09-07 20:26:00
污染
作者: Killercat (杀人猫™)   2017-09-07 22:20:00
.h里面 using namespace xxx; 会污染所有include他的档案 包含被.h include的在内然而.cpp里面使用就比较没有问题 因为绝大多数脑袋正常的工程师都会尽可能避免include .cpp当然我也看过天兵写在precompile header(如stdafx.h)的
作者: stucode   2017-09-07 23:43:00
导入整个名称空间很少有合理使用的场合除了放在标头档会污染其他档案外在原始码档案里面用也可能会产生问题更可怕的是有时候这样做会让名称间偷天换日造成难解的执行时期 bug
作者: dces4212 (flawless)   2017-09-08 03:49:00
ide可以换VS community版 免费的

Links booklink

Contact Us: admin [ a t ] ucptt.com