问个比较弱智的问题:怎样在父类中调用子类?

ManOfBCB 2010-04-06 09:46:41
如:
A.h文件:

#include "B.h"

class A
{
...

B* b;
...
}

A.cpp文件:


#include "A.h"
A::A()
{
}
...
...

B.h文件:

#include "A.h"
class B:public A
{
B();

...
}

B.cpp文件:
include"B.h"

B::B()
{
}

...
...


如上,B类头文件调用父类A的头文件,A类头文件又需要调用子类B的头文件,这样就会出现冲突,怎么解决呢?
如果放在CPP文件中则不会出现,但是程序需要放在头文件中。
谢谢
...全文
182 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
williamsong997 2010-04-25
  • 打赏
  • 举报
回复
有点搞不懂楼主想要实现什么样的目的,或者说为什么要这么做呢?
为什么要在子类中实现父类呢?
父类的东西子类已经继承过来了,实现子类为什么不行呢?
blueice12 2010-04-23
  • 打赏
  • 举报
回复
1. 父类增加一个函数指针变量并在必要的时候调用,子类初始化时给它赋值为想要的函数。
2. 父类增加一个虚函数,并在必要的时候调用,子类实现该虚函数。

在本质上,上面的两个方法没有区别。
古典概型 2010-04-16
  • 打赏
  • 举报
回复
不太清楚,但我觉得可以在父类中声明父类型的指针变量,但将来以子类对象的地址对其赋值
sundl2268 2010-04-13
  • 打赏
  • 举报
回复
和我的想法不某二合

如果你在头文件里加了
#ifndef XXXX
#define XXXX
...
#endif
应该不会产生冲突
更好的方法是在A.h里不包含B.h,而是直接在class A之前声明一下class B就可以了:
class B;
class A
{
...

B* b;
...
}
我像这个就不会冲突了,预编译时候就可以解决这个问题
saishow 2010-04-13
  • 打赏
  • 举报
回复
哎刚刚看到构造函数和解释函数 函数继承的方面.看的头是大的.
Waiting4you 2010-04-06
  • 打赏
  • 举报
回复
如果你在头文件里加了
#ifndef XXXX
#define XXXX
...
#endif
应该不会产生冲突
更好的方法是在A.h里不包含B.h,而是直接在class A之前声明一下class B就可以了:
class B;
class A
{
...

B* b;
...
}
regersubadm 2010-04-06
  • 打赏
  • 举报
回复
那这个应该是你封装的结构有问题了。
你看一下在A.h里面为什么要引用B.h?如果跟class B没有关系的话就放到c.h里面,然后在A.h引用c.h就可以了。如果A.h里面要用到Class B那就是有问题了.
YeBinYe 2010-04-06
  • 打赏
  • 举报
回复
用友元函数或友元类可以实现
huzhangyou 2010-04-06
  • 打赏
  • 举报
回复
没有看您的代码
如果单纯父类调用子类的话
可以考虑虚函数
virtual 的纯虚函数之类。
ManOfBCB 2010-04-06
  • 打赏
  • 举报
回复
最主要的是:我要在父类中new子类,如:
如:
A.h文件:

#include "B.h"

class A
{
...

B* b;
...
}

A.cpp文件:


#include "A.h"
A::A()
{
b= new B;
}

A::~A()
{
delete b; b = NULL;
}
...
...

B.h文件:

#include "A.h"
class B:public A
{
B();

...
}

B.cpp文件:
include"B.h"

B::B()
{
}

...
...

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧