例如,我们有一些带有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/

10-09 13:35