结构类型的交叉引用

stevenjin 2009-04-20 09:18:48
在林锐的书里,说道:
虽然对象不能自包含,但可以自引用.而且两个类型可以交叉引用,这种关系称为holds-a关系.因为任何类型的指针的大小都一样,给指针分配存储空间的时候不需要知道 它指向的对象的类型细节.

#include "stdafx.h"
#include <iostream>
#include <assert.h>
using namespace std;
#include <iostream>
using namespace std;


struct A
{
int age;
B *pB;
};

struct B
{
int score;
A *pA;
};
void main()
{

}


编译后报错:
错误 1 error C2143: 语法错误 : 缺少“;”(在“*”的前面) c:\documents and settings\administrator\my documents\visual studio 2005\projects\c++ project\c++ project\c++ project.cpp 12
错误 2 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int c:\documents and settings\administrator\my documents\visual studio 2005\projects\c++ project\c++ project\c++ project.cpp 12
错误 3 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int c:\documents and settings\administrator\my documents\visual studio 2005\projects\c++ project\c++ project\c++ project.cpp 12
...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ericming200409 2009-04-20
  • 打赏
  • 举报
回复
前置声明应该可以吧
lq651659889 2009-04-20
  • 打赏
  • 举报
回复
学习下
wanjingwei 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mengde007 的回复:]
前置声明;
struct B;
struct A
{
int age;
B *pB;
};

struct B
{
int score;
A *pA;
};
[/Quote]
mark下
  • 打赏
  • 举报
回复
struct B ;
struct A
{
int age;
B *pB;
};

struct B
{
int score;
A *pA;
};


啥也不说了
cyldf 2009-04-20
  • 打赏
  • 举报
回复

struct B;使用B之前要先声明
struct A
{
int age;
B *pB;
};

struct B
{
int score;
A *pA;
};
void main()
{

}

stevenjin 2009-04-20
  • 打赏
  • 举报
回复
是呀,我也是这样用,不报错.怎耐书上没这么写,以为不行
pengzhixi 2009-04-20
  • 打赏
  • 举报
回复

struct B;
struct A
{
int age;
B *pB;
};

struct B
{
int score;
A *pA;
};


用前置声明试下
mengde007 2009-04-20
  • 打赏
  • 举报
回复
前置声明;
struct B;
struct A
{
int age;
B *pB;
};

struct B
{
int score;
A *pA;
};

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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