关于类的声明顺序的问题,请高手指教!

lujun2000 2003-06-28 10:53:49
如下几个类的声明:

//Personnel 系列
class Personnel
{
public:
virtual ~Personnel() = 0;
virtual void Pay() = 0;
virtual void Promote() = 0;
virtual void Accept(PersonnelV&) = 0;

protected:
Personnel();
};

class Officer : Personnel
{
public:
virtual void Pay();
virtual void Promote();
virtual void Accept(PersonnelV&);
};

class Captain : Officer
{
public:
virtual void Pay();
virtual void Promote();
virtual void Accept(PersonnelV&);
};

class First : Officer
{
public:
virtual void Pay();
virtual void Promote();
virtual void Accept(PersonnelV&);
};

//PersonnelV 系列
class PersonnelV
{
public:
virtual ~PersonnelV() = 0;
virtual void Visit(Personnel&) = 0;
virtual void Visit(Officer&) = 0;
virtual void Visit(Captain&) = 0;
virtual void Visit(First&) = 0;

protected:
PersonnelV();
};

class DoSomeThing : PersonnelV
{
public:
DoSomeThing();
~DoSomeThing();

virtual void Visit(Personnel&);
virtual void Visit(Officer&);
virtual void Visit(Captain&);
virtual void Visit(First&);
};

以上声明中,两个系列的类中都包含对方的实例,这样的话不管哪个放在前面哪个放在后面编译时都说找不到另一方………(Visual Studio.NET环境),不知该如何解决,请高手指教!
...全文
147 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
letok 2003-06-29
  • 打赏
  • 举报
回复
楼上的正解
2608 2003-06-29
  • 打赏
  • 举报
回复
使用向前声明(forward declaration)

class class1;
class class2;

class class1
{...}

class class2
{...}


goodluckyxl 2003-06-29
  • 打赏
  • 举报
回复
使用未定义类的实体前
先声明该类。
这是基本的工作/
bluedodo 2003-06-29
  • 打赏
  • 举报
回复
gz
kicool 2003-06-28
  • 打赏
  • 举报
回复
两个类的声明都放在定义前面!
ntxs 2003-06-28
  • 打赏
  • 举报
回复
换个姿势,
再来一次。

如果是这样的话,类的设计本身就有问题。
不用这种方式的互相访问也应该能实现问题啊。

换个姿势,
再来一次。
boyfling 2003-06-28
  • 打赏
  • 举报
回复
把类声明写在最前面试试
lujun2000 2003-06-28
  • 打赏
  • 举报
回复
试过,但当调用PersonnelV的子类DoSomeThing里的方法时,编译出错:

error C2243: “类型转换” : 从“DoSomeThing *__w64 ”到“PersonnelV &”的转换存在,但无法访问
qibo999 2003-06-28
  • 打赏
  • 举报
回复
前面先放一个类的声明,定义放到后面就可以了。
harrypotter 2003-06-28
  • 打赏
  • 举报
回复
在VC6中可以在最前面加上class PersonnelV ;就可以了,
不过在。net下就不知道了。

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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