MISRA Discussion Forums

Full Version: Rule #3-2-3 and Forward Declarations?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
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?
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?
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
I don't understand. Are you saying the "one and only one file" requirement does not apply to friend declarations and forward references?
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)"