游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9952|回复: 19

奇怪的类声明问题.

[复制链接]

21

主题

86

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2003-11-16 23:05:00 | 显示全部楼层 |阅读模式
我声明的一个类,定义成另外一个类成员时,出错说"类没有被声明",但是定义成指针,用new初始,就不报错了.把它定义称全局变量或在main中也没问题.这是怎么回事?这个类是某个类的friend,是否和此有关?
有没有关于预编译的资料?我想学一下。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2003-11-17 09:33:00 | 显示全部楼层

Re:奇怪的类声明问题.

具体的错误是什么?
class xxx undefined吗?

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2003-11-17 09:36:00 | 显示全部楼层

Re:奇怪的类声明问题.

预编译,就是那一堆宏什么的?
指令很简单,就只有几个:
#define
#undef
#ifdef
#ifndef
#else
#if
#endif
#include
大概常用的就这几个吧。

21

主题

86

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2003-11-17 09:42:00 | 显示全部楼层

Re: 奇怪的类声明问题.

可能没说清楚。
是这样:
class a
{
}

class b
{
a m_a;  //出错了,提示a无意义。
            //如果用 a* m_pa,没问题。
}

而且在WinMain中,或全局中定义 a g_a ,也没问题。
为什么?我实在是不想用指针,搞了一个小时也不知怎么回事,我用的是vc6.0,也许该换个编译器了。

21

主题

86

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2003-11-17 09:49:00 | 显示全部楼层

Re: 奇怪的类声明问题.

class xxx undefined,是这样。那几个指令我都知道,但总是有问题。

6

主题

100

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2003-11-17 09:54:00 | 显示全部楼层

Re:奇怪的类声明问题.

在类B的头文件中包含了类A的头文件了吗?

6

主题

100

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2003-11-17 09:55:00 | 显示全部楼层

Re:奇怪的类声明问题.

这跟编译器一点关系都没有。。。 我用VC6 N年了。。。。爽得很。

21

主题

86

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2003-11-17 10:13:00 | 显示全部楼层

Re:奇怪的类声明问题.

当然包含了,我是在head.h中包含所有头文件的#include,并且声明所有的类(class a; class b; ......),其他文件只要#include "head.h"就行了。我是跟别人学的,这样看着比较清晰。这有问题吗?

21

主题

86

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2003-11-17 10:28:00 | 显示全部楼层

Re:奇怪的类声明问题.

是这样写的
class a;
class b;
我也试过在b头文件中加class a;,没用。肯定是编译的问题。如果我先在b中a * m_pa,编译一下。然后再改成a m_p编译也没问题,但如果rebuilt all,就有不行了。我昨天晚上搞了一个小时,没搞定。

1

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2003-11-17 11:18:00 | 显示全部楼层

Re:奇怪的类声明问题.

这和类声明无关。你的错误信息能贴出来吗?
a m_a;   
a *m_pa;
是完全不同的。m_a编译要把构造函数具现(这个词不恰当)。
但是a *m_pa;根本就不去找构造函数。
我想是编译找不到构造函数吧!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-24 06:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表