C++ typedef如何 前向声明

比如//Class2.hclassClass1;//前向声明classClass2{Class1*p;}//Class2.cpp#includeClass2.h#incl... 比如
//Class2.h
class Class1; //前向声明
class Class2{
Class1 *p;
}
//Class2.cpp
#include Class2.h
#include Class1.h //在CPP中包含具体的头文件
但是 如果在Class1.h中
class Class1{
public:
xxx
}
typedef Class1 Class11;
如果想让外界通过Class11 这个名字使用Class1这个类。其他的类又该如何进行前向声明呢?别的类还是需要知道Class1这个原始的名字啊。
展开
 我来答
HY黄小小
2015-12-07 · TA获得超过7285个赞
知道大有可为答主
回答量:1686
采纳率:52%
帮助的人:274万
展开全部
  前向声明就是:

  可以声明一个类而不定义它
  class Screen;//declaration of the Screen class
  这个声明,有时候被称为前向声明(forward declaration),在程序中引入了类类型的Screen.在声明之后,定义之前,类Screen是一个不完全类型(incompete type),即已知Screen是一个类型,但不知道包含哪些成员.
  不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数.
  这是因为不知道这个类型的占用的空间大小;
  例子:
  class A ;
  class B {
  private:
  A* fPtrA ;
  public:
  void mymethod(const& A) const ;
  } ;
  前置声明的好处很多, 比如能避免头文件互相包含的冲突, 比如有时在一个头文件中只需要另一个头文件的某个类型定义, 只需要对它做一下前置声明即可。
欢乐多Ek
2013-07-23 · TA获得超过478个赞
知道小有建树答主
回答量:477
采纳率:0%
帮助的人:417万
展开全部

用包吧。

namespace _class1
{
    class Class1{...};
}
 
typedef _class1::Class1  Class11;

这样外界只会知道Class11这个类而不知道Class1这个类了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sscwindy
2015-11-15
知道答主
回答量:25
采纳率:0%
帮助的人:15.2万
展开全部
typedef int newint;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暗窥六道
2015-11-24 · TA获得超过111个赞
知道答主
回答量:144
采纳率:0%
帮助的人:64.5万
展开全部
typedef 对于复杂的类型可以起到简化的作用,和前向声明并没有什么关系。比如声明一个含有五个返回值和参数都为空的数组可以这么定义: typedef (int (function_array[5])(void));

至于怎么看懂,我倒是写了个博客说明问题,有兴趣可以看下:http://www.cnblogs.com/wuOverflow/p/4160851.html
当然网上还有更多写得更好的博客,也可以进一步查阅。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
archmageee4
2015-10-03 · TA获得超过1516个赞
知道大有可为答主
回答量:1581
采纳率:78%
帮助的人:925万
展开全部
需要前向声明吗? 一般需要这样做的,是类定义.
比如class A里有B的指针 ,而B也有A的指针时, 才需要前向.
你一个typedef 凑什么热闹?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式