为什么C++类的头文件中包含hpp文件时会报错呢

如题所述

虽然你是一句话。但是凭我的经验来说。我已经明白了你的问题。
你的意思是 你的类 声明在 .h文件中。定义在.cpp文件中。这个.cpp文件肯定包含了前面的.h文件。
然后这个.h中 包含了 某个 .hpp文件。于是编译的时候 相当于 .h包含了一次 .hpp。.cpp也包含了一次.hpp。如果.hpp文件中 你定义了全局变量或者全局函数。则会编译报错——重定义!!。
这也是我 超级不喜欢用.hpp的原因。建议 吧.hpp文件 拆分成.h和.cpp。或者不要在.hpp里面定义全局的变量和函数
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-31
报的错误贴出来才好分辨,hpp是标准的c++头文件,是一个文本文件,错误应该是跟内容有关系的
第2个回答  2013-02-02
哥,你问问题好歹有个上下文。
你就来一句,我头文件中包含hpp文件报错。
天知道你这个文件是什么样子的:有木有包含其他头文件,是否有循环包含????
天知道你这个hpp文件是怎么样子的:有冲突头文件名???有命名污染???本回答被提问者采纳
第3个回答  2013-02-02
出错的代码和错误提示先贴出来来自:求助得到的回答
第3个回答  2013-02-02
请给出具体的事例

为什么C++类的头文件中包含hpp文件时会报错呢
你的意思是 你的类 声明在 .h文件中。定义在.cpp文件中。这个.cpp文件肯定包含了前面的.h文件。然后这个.h中 包含了 某个 .hpp文件。于是编译的时候 相当于 .h包含了一次 .hpp。.cpp也包含了一次.hpp。如果.hpp文件中 你定义了全局变量或者全局函数。则会编译报错——重定义!!。这也是我 超...

C++builder编译时提示TeCanvas.hpp库函数有错
这种情况一般是,在安装三方控件的电脑中建立的工程,在工程中没有用到它,但在工程文件中包含它,这时,换一台电脑后,没有安装这个三方控件,就提示出错。解决方法:在你的电脑中,用无格式的文本编辑软件打开这个工程文件,找到它,删除,就可以解决问题。

hpp是什么意思
hpp是用C\/C++语言编写的头文件,通常用来定义数据类型,声明变量、函数、结构和类。由于hpp本质上是作为.h被调用者include,所以当hpp文件中存在全局对象或者全局函数。而该hpp被多个调用者include时,将在链接时导致符号重定义错误。要避免这种情况,需要去除全局对象,将全局函数封装为类的静态方法。hpp的...

.hpp是什么文件
在C++编程中,.hpp文件扮演着至关重要的角色。它是一种特殊的头文件,主要负责定义和声明程序中所需的数据类型、变量、函数、结构和类。hpp文件的作用在于将原本可能分散在.cpp文件中的实现细节集中管理,使得调用者只需包含.hpp文件,无需将.cpp文件直接添加到项目中进行编译。这种方法的优势在于,它能...

C++运行报错第一行就错了<SFML\/Graphics.hpp>不存在是怎么回事?_百度...
设置工程属性选项 a. c\\c++ →一般→其他include包含目录 加入D:\\ThirdLib\\SFML-2.3.2\\include b. 连接器→一般→ 其他程序库目录,加入D:\\ThirdLib\\SFML-2.3.2\\lib c.连接器→输入→其他相依性,加入sfml-graphics.lib,sfml-window.lib,sfml-system.lib 3.下载链接:SMFL下载地址 ...

Cannot open include file: 'Classes.hpp':
这个问题一般是编译器找不到头文件所致。如果是VC6,你可以在菜单工具->选项->路径中添加你自己的路径;更好一点的做法,你可以在project->setting->C\/C++ ->Category ->Proprocessor _ >Additional include directories中添加你自己的路径,格式如c:\\val,..\\..\\include,d:\\brew\\src\\inc VC2005或...

C++构造函数的疑问 下面的程序编译时说有无法解析的外部命令。好像是构...
你只有类声明,没有类定义,所以在连接的时候报无法找到符号的错误。把你头文件中的类声明修改成如下包含了定义的形式即可。仅仅是修改成了定义形式,具体如何实现,还需要你自己去把握,修改成如下形式就可以编译成功了,不过程序本身肯定逻辑是错误的。需要你根据情况进一步修改:ifndef PROPERTY_HPP define...

.hpp是什么文件
hpp是C++程序头文件 。HPP,计算机术语,用C\/C++语言编写的头文件,通常用来定义数据类型,声明变量、函数、结构和类。hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再 将cpp加入到project中进行编译。而实现代码将直接...

HPPhpp在C++中的含义
在C++编程中,hpp是一种特殊的文件扩展名,全称为Header Plus Plus。它的主要功能是将原本在.cpp文件中的实现代码整合到.h头文件中,这样,当需要使用此类时,只需包含hpp文件即可,无需再将.cpp文件单独编译加入项目。这种设计的优势在于,调用者无需处理额外的编译步骤,也不需要发布复杂的lib或dll...

为什么C++头文件没有.h也能运行出来? - C \/ C++ -
c++包含头文件时写成#include[i]#include#include而c包含头文件时写成#include 因为c的头文件扩展名是.h,而c++头文件可以是.h,也可以是.hpp,.hxx等,包含头文件时不带扩展名就能适应几种不同扩展名的情况。这也是c和c++之间容易错的一个小区别。

相似回答