例如,我们有一个带有其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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句