typedef类的正向声明
forward declaration of typedef class
例如,我们有一些类的ptr typedef
ed
class Foo
{
....
};
typedef shared_ptr<Foo> FooPtr;
是否可以转发声明FooPtr
?其目的是避免将标头与FooPtr
定义一起包含。
更新1我尝试过的代码
另一个.h
class FooPtr;
calss A
{
.....
FooPtr m_pFoo;
.....
}
编译器错误
Foo.h: error C2371: 'FooPtr' : redefinition; different basic types
1> another.h(7) : see declaration of 'FooPtr'
是的,这应该是完全可能的,因为shared_ptr
被设计为指针的安全版本,并且允许指向不完整类型的指针(就像引用一样)。
所以,是的,您可以删除这个依赖项,并用简单的前向声明替换Foo
的主体(或包括其标头):
class Foo;
typedef shared_ptr<Foo> FooPtr;
不能转发声明typedef
。
但是您可以仅通过Foo
的正向声明来声明它。
class Foo;
typedef shared_ptr<Foo> FooPtr;
相关文章:
- 向前声明指向类的 typedef 指针
- 使用typedef'ed返回类型声明友元函数时出现编译器错误
- 如何创建 typedef 结构的前向声明
- 格式为`int Typedef my_int;`的Typedef声明
- 无法转发声明C typedef结构-正在查找其他建议
- "typedef"类型名称是否可以像"struct"定义那样声明指向结构的指针?
- 具有未声明/未定义类型的 typedef 结构
- 我们可以在声明中的任何位置放置"typedef"说明符吗?
- C++ typedef 函数指针,并在一个语句中声明一个指针
- 错误:使用 tesseract 引擎时 C++ 中的声明'typedef struct tagBLOB BLOB'冲突
- typedef 应该同时在类定义和类声明中吗?
- 向前声明 typedef 保护
- "myStateType"未在此范围内声明,原因 #typedef
- 在 typedef 结构中声明一个数组
- 如何在包含 typedef 时用从右到左的规则解释变量声明
- C 迭代器从Typedef std :: Map作为模板参数声明
- C 使用声明,Typedef和数组类型
- 如何在C++标头中声明typedef
- 使用 FreeTDS 库时出现声明冲突的声明“typedef int RETCODE”错误
- 在c++类中向前声明typedef