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这个原始的名字啊。 展开
//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这个原始的名字啊。 展开
6个回答
展开全部
前向声明就是:
可以声明一个类而不定义它
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 ;
} ;
前置声明的好处很多, 比如能避免头文件互相包含的冲突, 比如有时在一个头文件中只需要另一个头文件的某个类型定义, 只需要对它做一下前置声明即可。
可以声明一个类而不定义它
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 ;
} ;
前置声明的好处很多, 比如能避免头文件互相包含的冲突, 比如有时在一个头文件中只需要另一个头文件的某个类型定义, 只需要对它做一下前置声明即可。
展开全部
用包吧。
namespace _class1
{
class Class1{...};
}
typedef _class1::Class1 Class11;
这样外界只会知道Class11这个类而不知道Class1这个类了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef int newint;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef 对于复杂的类型可以起到简化的作用,和前向声明并没有什么关系。比如声明一个含有五个返回值和参数都为空的数组可以这么定义: typedef (int (function_array[5])(void));
至于怎么看懂,我倒是写了个博客说明问题,有兴趣可以看下:http://www.cnblogs.com/wuOverflow/p/4160851.html
当然网上还有更多写得更好的博客,也可以进一步查阅。
至于怎么看懂,我倒是写了个博客说明问题,有兴趣可以看下:http://www.cnblogs.com/wuOverflow/p/4160851.html
当然网上还有更多写得更好的博客,也可以进一步查阅。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要前向声明吗? 一般需要这样做的,是类定义.
比如class A里有B的指针 ,而B也有A的指针时, 才需要前向.
你一个typedef 凑什么热闹?
比如class A里有B的指针 ,而B也有A的指针时, 才需要前向.
你一个typedef 凑什么热闹?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询