回 帖 发 新 帖 刷新版面

主题:[讨论]救急:大家给帮我想想这个类的层次结构应该怎么设计?

我想设计两个类,而且这两个类都公有继承了一个父类。但是我在两个子类中分别都要用到彼此作为一个成员函数的参数。结果我用以下的设计去出现了后面定义的类(class C)不被前面的类(class B)认识而报错
class A
{  }
class B:public A
{
public:
  void disp( C &c1)
{ }
};
class C:public A
{
  void disp(B b1)
{}
};
  我本想用到虚继承的方式。在两个类的成员函数中的参数都用class A类来代替。可是
因为子类新增的东西不是父类的成员而报错
(如:B::disp(A a1)不是class A的成员
   请问这几个类的我该怎么设计呢?

回复列表 (共5个回复)

沙发

可以把声明写在前面
如:
class A;
class B;
class C;

下面是实现,这样就不会出现不能访问的问题了。

板凳

可以把声明写在前面
如:
class A;
class B;
class C;

首先感谢你的指教,但是一开始我就想过这样,但是在BCB6.0中虽然没有报错,但是还是出现了原来的问题(前面的类不认识后面定义的类)

3 楼

首先说明,这样做肯定没错。
如果这个文件里面,只有类的声明(declaration),没有实现(implementation)就没问题。是不是你在此文件里写了实现代码。

4 楼

我没有在实现的文件中声明啊。我是在父类的声明文件中紧接着就声明了
而且我加上了他们的继承关系后又报错了。如下
class b:public a;
class c:public a;
现在我想用友无函数来实现这个想法了。应该可以只会改一下函数的结构就行了
  thank you all the same!

5 楼

不知道了,呵呵

我来回复

您尚未登录,请登录后再回复。点此登录或注册