Redian新闻
>
两个class的交叉引用问题
avatar
两个class的交叉引用问题# Programming - 葵花宝典
q*s
1
在做一个程序,需要用到两个class的交叉引用,比如在A类中要用到B类的实例,同样在B
类中也需要用到A类的实例,我把两个类是放在两个文件中,分别为a.h, a.cpp, b.h, b.
cpp,但是,问题是我无论如何也不能让编译器认识这是两个类。
请教高手,如何放置头文件才可以实现编译通过。
我的文件大概如下:
文件a.h
#ifndef a_h
#define a_h
class A
{
vector mylist;
}
#endif
文件b.h
#ifndef b_h
#define b_h
class B
{
public:
void print(A aa);
}
#endif
avatar
a*o
2
where is your include

B
b.

【在 q***s 的大作中提到】
: 在做一个程序,需要用到两个class的交叉引用,比如在A类中要用到B类的实例,同样在B
: 类中也需要用到A类的实例,我把两个类是放在两个文件中,分别为a.h, a.cpp, b.h, b.
: cpp,但是,问题是我无论如何也不能让编译器认识这是两个类。
: 请教高手,如何放置头文件才可以实现编译通过。
: 我的文件大概如下:
: 文件a.h
: #ifndef a_h
: #define a_h
: class A
: {

avatar
q*s
3
每个cpp文件include他自己的头文件
我在头文件中放进了要用的类的文件,如下
文件a.h
#ifndef a_h
#define a_h
#include "b.h" //好像不行
class A
{
vector mylist;
}
#endif
文件b.h
#ifndef b_h
#define b_h
#include "a.h" //好像这样不行的
class B
{
public:
void print(A aa);
}
#endif
avatar
a*o
4
class后面的分号呢

【在 q***s 的大作中提到】
: 每个cpp文件include他自己的头文件
: 我在头文件中放进了要用的类的文件,如下
: 文件a.h
: #ifndef a_h
: #define a_h
: #include "b.h" //好像不行
: class A
: {
: vector mylist;
: }

avatar
q*s
5
分号我忘了加了,确定不是因为这个问题
因为编译器说:
1、A中B没有定义
2、B中A没有定义
3、print不是一个函数
当然,include的头文件不同,每次并不是都给出这三个错误
我觉得就是头文件组织的不好
avatar
a*o
6
那在家一个declaration
a的定义前加class b;
b同理

【在 q***s 的大作中提到】
: 分号我忘了加了,确定不是因为这个问题
: 因为编译器说:
: 1、A中B没有定义
: 2、B中A没有定义
: 3、print不是一个函数
: 当然,include的头文件不同,每次并不是都给出这三个错误
: 我觉得就是头文件组织的不好

avatar
q*s
7
多谢!!!!
可以了。只加头文件还不行,还必须在两个类的定义里加上对方的声明。
谢谢!
avatar
o*r
8
exactly

【在 a***o 的大作中提到】
: 那在家一个declaration
: a的定义前加class b;
: b同理

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。