• 8874阅读
  • 4回复

【提问】什么时候要包含对应的头文件,什么时候可以不用包含?谢谢! [复制链接]

上一主题 下一主题
离线geforcex
 

只看楼主 倒序阅读 楼主  发表于: 2005-11-20
我看到了Qt Assistor 上的例子8,其中有这样几个关于包含文件的问题
1. 在cannonfield.h中有一句:
     protected:
    void paintEvent(QPaintEvent *event);
  既然有“QPaintEvent”出现,难道不需要将其对应的头文件QPainter包含进去吗?例子没有包含,我自己加上和不加编译都能通过

2. 在cannonfield.cpp中
void CCannonField::paintEvent(QPaintEvent *event)
{
  QPainter painter(this);
  painter.drawText(200, 200, "Angle = "+QString::number(currentAngle));
}

同样,出现了新的identifier:QString。奇怪,该对应头文件仍然没有被包含进去,编译一样能通过

所以我想请问大家,到底什么样的可以不包括,什么样的必须包括,谢谢!
离线XChinux

只看该作者 1楼 发表于: 2005-11-20
这个怎么说呢,因为有的头文件里已经把你需要的 头文件包含进去了。
比如你用到A类,同时又用到了B类,B类里又声明了A类,那么你的A类就不用再包含头文件了。
等等如此,一层一层地包含得很多的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线geforcex

只看该作者 2楼 发表于: 2005-11-23
多谢斑竹回答!
按照我现在这种情况应该可以推断出<QApplication>或者<QWidget>里面就已经包含了QString的定义了吧?
看来#ifndef那对宏还是十分有必要的哦
离线ok2005
只看该作者 3楼 发表于: 2005-11-25
有启发!!!!!
离线fanyu
只看该作者 4楼 发表于: 2005-11-25
已能否编译通过为原则,如果能通过就不要加了(虽然加了也可以编译通过,但会影响到预编译处理),如果提示找不到文件,就要加上它的头文件了。
快速回复
限100 字节
 
上一个 下一个