关于类定义的问题

scicos 2001-07-30 01:18:22
class A;
class B;

class A{
....
}
class B{
...
}
A类中有一个成员函数返回的类型是B,但是在编译是该成员函数出现错误:
error C2027: use of undefined type 'B'
为什么?
...全文
138 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ExitWindows 2001-07-31
  • 打赏
  • 举报
回复
up
salesman 2001-07-31
  • 打赏
  • 举报
回复
楼上说的显然不是一回事。
返回B 和返回B& (或B*)肯定不一样。
(有肯能如STLer(VC++)所说的)

也不是拼写的问题。
上机试一下就很清楚了。
leesungyong 2001-07-30
  • 打赏
  • 举报
回复
为什么我的没问题?
a.h文件
#if !defined(AFX_A_H__7A2BE111_7078_406A_B8E0_2E7A3D5BDFCB__INCLUDED_)
#define AFX_A_H__7A2BE111_7078_406A_B8E0_2E7A3D5BDFCB__INCLUDED_
#include "B.h"
class A;
class B;
class A
{
public:
B Fun();
A();
virtual ~A();

};
#endif // !defined(AFX_A_H__7A2BE111_7078_406A_B8E0_2E7A3D5BDFCB__INCLUDED_)

A.cpp文件
#include "A.h"
A::A()
{

}

A::~A()
{

}

B A::Fun()
{
return B();
}

B.h文件
#if !defined(AFX_B_H__B9F203F6_2492_439B_A6F4_0794450A3605__INCLUDED_)
#define AFX_B_H__B9F203F6_2492_439B_A6F4_0794450A3605__INCLUDED_

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

};
#endif // !defined(AFX_B_H__B9F203F6_2492_439B_A6F4_0794450A3605__INCLUDED_)


B.cpp文件
#include "B.h"
B::B()
{

}

B::~B()
{

}

A B::Fun()
{
return A();
}
scicos 2001-07-30
  • 打赏
  • 举报
回复
class B;
class A{
public:
B operator+(B& b);
....
}
class B{
...
}
只有函数的声明就对了,可是如果在B operator+(B& b)后面紧跟函数的定义,就会报错。
holyfire 2001-07-30
  • 打赏
  • 举报
回复
class B;

class A{
....
};
class B{
...
};

这样应该就可以了,是不是B*,B&都不关事

可能是拼写错误

将代码贴全一点看看
salesman 2001-07-30
  • 打赏
  • 举报
回复
同意_STLer(VC++),
class A 这个预声明没有用。
如果把B的定义放在A的前头,或换成 B&或B*
肯定都没有了use of undefined type 'B'这个问题。

scicos 2001-07-30
  • 打赏
  • 举报
回复
好象还是没什么用吗?我在写的详细一些
class A;
class B;

class A{
public:
B operator+(B& b);//换成B& or B*都不对
....
}
class B{
...
}
也就是说A类的对象喝B类的对象相加,结果为B
_STLer 2001-07-30
  • 打赏
  • 举报
回复
将返回类型声明为B& or B*试试,如果返回B将导致类B的=operator & B(B& b) (?这一点希望讨论?)被调用,必须有完整的声明!
scicos 2001-07-30
  • 打赏
  • 举报
回复
to DimVar() 
不行
wanghu 2001-07-30
  • 打赏
  • 举报
回复
成员函数返回的类型改为*B试试
wolfboy 2001-07-30
  • 打赏
  • 举报
回复
gz
DimVar 2001-07-30
  • 打赏
  • 举报
回复
class B;
class A;
class A{
....
}
class B{
...
}

69,371

社区成员

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

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