| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1746 人关注过本帖
标题:头文件问题
只看楼主 加入收藏
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:7 
那不知道。应该至少不会出现递归了呀。

你把头文件中的代码全注释掉。就留那几个预处理指令,再重建一次,看看行不行。
2012-07-01 18:01
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:7 
程序代码:
class B;
class A
{
    B* ptrToB;
};

class B
{
    A* ptrToA;
};
如果两个类互相包含,这样的写法是可行的。
如果类的成员中是另一个类的实例对象,我觉得是先有蛋或者先有鸡的问题吧。
也许换一种逻辑能用别的方法解决呢?
一家之言

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2012-07-01 18:20
sfwyx
Rank: 2
等 级:论坛游民
帖 子:25
专家分:59
注 册:2011-8-18
收藏
得分:0 
回复 12楼 lonmaor
我改掉代码中一些小错误之后试了这个方法,在woman类前边声明man类,在man类前边声明woman,还是不行
2012-07-02 09:55
sfwyx
Rank: 2
等 级:论坛游民
帖 子:25
专家分:59
注 册:2011-8-18
收藏
得分:0 
回复 11楼 pangding
我把main.cpp和两个头文件里除了预处理指示之外的一切都注释了,只留下几个cout
程序代码:
/////main.cpp
#include"man.h"
#include<iostream>
using namespace std;
char ManOrWoman;
int main()
{
    put();
    out();
    cout<<"MAIN_CPP"<<endl;
/*...*/
return 0;
}
/*...*/
//////man.h
#ifndef MAN_H_
#define MAN_H_
#include<iostream>
#include"woman.h"
using namespace std;
void put()
{
    cout<<"MAN_H"<<endl;
}
/*...*/
//////woman.h
#ifndef WOMAN_H_
#define WOMAN_H_
#include"man.h"
#include<iostream>
using namespace std;
void out()
{
    cout<<"WOMAN_H"<<endl;
}
/*...*/
执行后输出:
MAN_H
WOMAN_H
MAIN_CPP
看来是其它代码出错了
2012-07-02 10:06
jiantiewen
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:61
专家分:307
注 册:2012-6-22
收藏
得分:7 
回复 14楼 sfwyx
就像是十二楼说的,两个类相互包含是不能用实例对象的,只能用指针。
2012-07-03 23:16
快速回复:头文件问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039797 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved