
C++头文件重复包含
我一直没遇到过这种问题,挺奇怪,就好像A.h定义一个类,B.h中也定义一个,A.h中includeB.h,同时A类也定义了一个B类指针,同样B.hinclude了A.h,...
我一直没遇到过这种问题,挺奇怪,就好像A.h定义一个类,B.h中也定义一个,A.h中include B.h,同时A类也定义了一个B类指针,同样B.h include 了A.h,也有一个A类指针,当然头文件中有pragma once,但是编译时A.cpp说找不到B这个标识符,同样B中也找不到A,好像没包含一样
按理来说它不会出错啊,到底怎么回事啊。
另外,程序规模比较大,我也说不好是不是重复包含的原因,反正就是明明包含了,却找不到标识符 展开
按理来说它不会出错啊,到底怎么回事啊。
另外,程序规模比较大,我也说不好是不是重复包含的原因,反正就是明明包含了,却找不到标识符 展开
展开全部
你这种情况不叫重复包含,而叫循环包含,属于错误的写法。
A.h和B.h互相彼此包含,将导致编译器无休止的彼此包含,所以编译器会报错。
正确的做法是采用类前声明,方法避免循环包含。
具体做法如下:
A.h中写#include "B.h"
在A.h中可以直接定义类B的对象;比如 B m_b;
而在B.h中不能直接写#include "A.h"
应该写
class A;//声明B是一个外部类
Class B
{
A *pA;//声明一个指向A类对象的指针
};
然后在B.cpp中加入#include "A.h"
再在B的构造函数中,使用new方式对pA进行实例化,构建A的类对象,并通过pA在程序中访问。
A.h和B.h互相彼此包含,将导致编译器无休止的彼此包含,所以编译器会报错。
正确的做法是采用类前声明,方法避免循环包含。
具体做法如下:
A.h中写#include "B.h"
在A.h中可以直接定义类B的对象;比如 B m_b;
而在B.h中不能直接写#include "A.h"
应该写
class A;//声明B是一个外部类
Class B
{
A *pA;//声明一个指向A类对象的指针
};
然后在B.cpp中加入#include "A.h"
再在B的构造函数中,使用new方式对pA进行实例化,构建A的类对象,并通过pA在程序中访问。
追问
我了个去,居然好了,太感谢了!!!!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询