Page 1 of 1

Rule #3-2-3 and Forward Declarations?

Posted: Wed Aug 18, 2010 8:05 pm
by gs
Does rule #3-2-3 prohibit the use of forward declarations in separate files? For example, if a file, a.h, contained "class B;" and another file, c.h, #include'd a.h and contained a definition for class D which contained "friend class B;", would the rule permit such?

Re: Rule #3-2-3 and Forward Declarations?

Posted: Thu Sep 17, 2015 3:05 pm
by ggoulas
I am interested by the answer to this question. Should forward declaration such as

class a_class;

be allowed by rule 3-2-3 anywhere in source files?
Could misra reply to this please?

Re: Rule #3-2-3 and Forward Declarations?

Posted: Tue Oct 11, 2016 10:32 am
by misra cpp
This rule does not preclude the use of friend or forward reference statements, but these must be in a separate header file.

A future edition may reconsider this point

Re: Rule #3-2-3 and Forward Declarations?

Posted: Fri Mar 24, 2017 4:19 pm
by gs
I don't understand. Are you saying the "one and only one file" requirement does not apply to friend declarations and forward references?

Re: Rule #3-2-3 and Forward Declarations?

Posted: Mon Jul 10, 2017 11:02 am
by misra cpp
This rule does not preclude the use of friend or forward reference statements, but these must be in a separate header file.

A future edition may reconsider this point

The second question, your examples are compliant - the objective is to ensure that class definitions are only made in one file (and not repeated in multiple translation units)"