当类A include类B,而类B include类A时候.....

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:30:39
当类A include类B,而类B include类A时候,编译时候是不是会出现语法错误?

error C2061: syntax error : identifier

我用的是VS2003

楼主的问题是个循环定义问题

// a.h
class b; // 就是加这么一个空定义

class a
{
class* b;
};

// b.h
class a; // 就是加这么一个空定义

class b
{
class* a;
}

1)把2个类的声明合并到1个头文件里。然后在.cpp源代码文件里include这个头文件。
2)尽量不要在头文件里包含另外的头文件。
3)由于公司里的软件代码非常复杂,而且要包含很多功能,因此头文件里会包含其它头文件再所难免。如果我们设计程序时,必须要在头文件里包含其它头文件的情况下,一定要使用一定的技术。如
//this is a.h
#ifndef A_H
#define A_H
#include b.h
#endif

//this is b.h
#ifndef B_H
#define B_H
#include a.h
#endif
4)推荐初学者使用第一种策略,比较简单,立竿见影,随着知识的积累,绝对推荐使用第三种(干C编程的话,应该是必须掌握的)。
P.S.有关使用头文件的技术和策略有好多,不必心急,慢慢积累知识!

A include类B(我的理解是A的H文件中include B) 那么在 B中应该是:
B的H文件中声明 class A;
B的CPP文件中 include A

呵呵,不太好!~

建议你看看C++ Primer4里面关于类的定义和声明,里面的讲究不是一两句话可以说清的

A include类B,而类B include类A时候,不要把include放到。H文件头,放到.CPP文件里面