类成员函数需要包含的头文件是放在.cpp 还是.h中

fzlrpsun 2012-02-27 08:05:00
1 比如说
一个类的成员函数 function(vector<string> name)
需要包含#include<vector>

是包含在类的.cpp 还是 .h文件中,还是两边都有


2 类成员是结构体变量
#include <iostream>
using namespace std;
class A
{
public:
struct SValve{
int a;
float b;
}valve;//这个valve是否必须?
void fuction(SValve valve);

};

void A::fuction(A::SValve valve)
{
cout<<"go to hell"<<endl;
}

void main()
{
A a;

a.valve.a=1;
a.valve.b=0.1;
a.fuction(A::SValve val);
}
想给valve赋值这样可以赋值,但如果我想利用SValve 定义另一对象val呢? A::SValve用法错误 a.SValve val 也错误




33 类的成员变量可否为其他类类型
class A
{
public:
B b;
};
class B
{
};


我知道应该把B的定义放前面,但要是两个类不在文件中呢,得用#include? 还有什么主意的?

谢谢 不甚感激
...全文
306 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
神武纪 2012-02-28
  • 打赏
  • 举报
回复
添加到H文件中吧,另外,记得你被包含的头文件要用
#ifndef XXX_H
#define XXX_H

#endif

防止嵌套了。
zzf19870622 2012-02-28
  • 打赏
  • 举报
回复
2:你定义一个类A的对象时,就会定义一个结构体SValve成员变量,如果你想单独定义SValve对象val是不可以的,因为SValve的作用域是在类A中。
3:可以在一个类中包含另一个类对象作为成员变量,但是应该在A类前面先对B进行类声明,class B;即可!
希望对你有帮助!
wei_xiaohui 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lou0378 的回复:]
把需要用到的库文件都放在头文件中,然后在你的.ccp文件中包含那个头文件就可以了,当然小程序包含在哪里都可以,但是大型程序,就必须放在头文件中,不但是库文件,自己定义的类的定义也应该包含在头文件中,这是一个很规范的做法。
[/Quote]注意别让头文件出现重复定义
fzlrpsun 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pxd4275 的回复:]

如果你在.h文件中用到了该类中的东西,则在头文件中包含即可,.cpp中不需要再包含。
如果你在头文件中不使用这个类中的东西,而只是.cpp中使用则只需要在.cpp中包含即可,.h中不需要再包含!
[/Quote]
明白,谢谢,麻烦再看看第2,3个问题
  • 打赏
  • 举报
回复
把需要用到的库文件都放在头文件中,然后在你的.ccp文件中包含那个头文件就可以了,当然小程序包含在哪里都可以,但是大型程序,就必须放在头文件中,不但是库文件,自己定义的类的定义也应该包含在头文件中,这是一个很规范的做法。
吾子墨鸿 2012-02-27
  • 打赏
  • 举报
回复
如果你在.h文件中用到了该类中的东西,则在头文件中包含即可,.cpp中不需要再包含。
如果你在头文件中不使用这个类中的东西,而只是.cpp中使用则只需要在.cpp中包含即可,.h中不需要再包含!
zhulan1991 2012-02-27
  • 打赏
  • 举报
回复
建议包含在.h中
因为有些是定义时需要的头文件,那么放在.h中
至于类实现时需要的头文件,再放在.cpp中
fzlrpsun 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]

只需要在头文件包含就是了。
因为你.cpp文件会包含该头文件的
[/Quote]
但是在.cpp写具体的成员函数,要包含某个#include 难道还得到.h 中添加吗?也不便阅读吧
pengzhixi 2012-02-27
  • 打赏
  • 举报
回复
只需要在头文件包含就是了。
因为你.cpp文件会包含该头文件的

64,686

社区成员

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

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