例如,我们有一些带有ptr typedef
ed的类
class Foo
{
....
};
typedef shared_ptr<Foo> FooPtr;
是否可以转发声明
FooPtr
?目的是避免在 header 中包含FooPtr
定义。更新1
我试过的代码
another.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
的正文(或包含其 header ):
class Foo;
typedef shared_ptr<Foo> FooPtr;
关于c++ - typedef类的前向声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29471313/