2017-06-04 66 views
2

有时我使用嵌套类foreward声明:错误地使用前向声明?

class A; 

class B 
{ 
    private: 
    A* object_A; 
    public: 
    B(){} 
}; 

的问题:如果我现在在C类使用正B类(B声明,并在这一点上的定义)声明的使用率会发生什么?这是否会导致B类中的任何问题,因为它被定义(与执行方法等),但使用前声明C类?以下代码片段中的语法class B;是否以某种方式覆盖了先前声明的,已定义的和已实现的类B

class B; 

class C 
{ 
    private: 
    B* object_B; 
    public: 
    C(){} 
}; 
+0

你为什么不尝试告诉我们。 –

+0

似乎工作。但也许我没有看到所有的后果。 – Lemonbonbon

+2

“前向声明”没有任何“错误用法”。如果编译器需要完整的类型*,它会告诉你。 – EJP

回答

3

是否语法类B;在下面的代码片段中以某种方式覆盖了之前声明的,已定义和实现的类B?

远期声明是不是覆盖。它只是给编译器提示类型定义是在某处实现的。对于用户定义的指针类型,编译器不需要定义,但需要知道对象的类型。