作者nsa1099 (可鲁)
看板C_and_CPP
标题[问题] 新手发问:请问大大们怎麽写header file
时间Wed Sep 6 18:03:12 2017
小弟知道伸手牌很不好
但因为自学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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 175.181.190.96
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1504692199.A.CC8.html
1F:→ hylkevin: namespace? 09/06 18:08
2F:推 LPH66: 1. namespace 问题, 所有标准的东西都在 std:: 下面 09/06 18:12
3F:→ LPH66: 然後提醒一下这里绝对不要 using namespace 09/06 18:13
4F:→ LPH66: 2. 是, 不过通常会尽量减少在 header 里引用的标头档 09/06 18:14
5F:→ LPH66: 3. 你不打那一行编译器就不知道你在做 template 宣告/定义 09/06 18:14
6F:推 stucode: 新手的话建议还是从一般函数练起 template实作要拆开放 09/06 18:28
7F:→ stucode: 有时候还需要编译器支援或者显式具现化 这些问题可能会 09/06 18:29
8F:→ stucode: 模糊你学习的焦点 09/06 18:29
9F:推 damody: 先换ide 09/06 18:29
10F:推 rbufghj9713: 偷偷跟你说,string在std下 09/06 20:19
11F:→ nsa1099: 谢谢大大们的建议,可以run了,真的非常感谢 09/07 13:02
12F:推 Mistyshadowe: 想请问一下不要使用 using namespace 的原因 09/07 19:36
13F:→ Mistyshadowe: 是避免混淆吗? 09/07 19:37
14F:→ grayStone: 污染 09/07 20:26
15F:→ Killercat: .h里面 using namespace xxx; 会污染所有include他的 09/07 22:20
16F:→ Killercat: 档案 包含被.h include的在内 09/07 22:20
17F:→ Killercat: 然而.cpp里面使用就比较没有问题 因为绝大多数脑袋正常 09/07 22:20
18F:→ Killercat: 的工程师都会尽可能避免include .cpp 09/07 22:21
19F:→ Killercat: 当然我也看过天兵写在precompile header(如stdafx.h)的 09/07 22:21
20F:推 stucode: 导入整个名称空间很少有合理使用的场合 09/07 23:43
21F:→ stucode: 除了放在标头档会污染其他档案外 09/07 23:43
22F:→ stucode: 在原始码档案里面用也可能会产生问题 09/07 23:43
23F:→ stucode: 更可怕的是有时候这样做会让名称间偷天换日 09/07 23:43
24F:→ stucode: 造成难解的执行时期 bug 09/07 23:43
25F:推 dces4212: ide可以换VS community版 免费的 09/08 03:49