Integrations (PTC products, 3rd party products and code) > Code integration (Ada, ARINC 653, C, C#, C++, IDL, Java, SQL and VB) > C++ code > Generating C++ code > Generating C++ code > Modeling C++ code in Modeler > Setting up classes for generating C++ code (C++ code)
  
Setting up classes for generating C++ code (C++ code)
In addition to the standard Class properties in Modeler, you can apply the «C++ Class» stereotype to a Class, and then use its Tag Definitions to define C++ specific information.
1. If you have not done so already, add the C++ Profile package to your Model. How?
2. Set the standard properties of the Class as required. Tell me more...
3. If you want to generate a Model's or Package's Classes in a specific order, order the Classes as required. Tell me more...
4. Apply the «C++ Class» stereotype to the Class.
For information about applying Stereotypes to an item, see Applying a Stereotype to a model item.
5. Open the Class' Property Pages, and then click the C++ Class tab.
For information about setting the tagged value of a Tag Definition, see Setting a tagged value for an applied Tag Definition.
6. If you want to specify a header file comment, specify the text as the tagged value of the C++ Header File Comment tag definition.
7. If you want to specify an implementation file comment, specify the text as the tagged value of the C++ Implementation File Comment tag definition.
8. If you want to specify header file #includes to files not modeled in Modeler, specify the #includes text as the tagged value of the C++ Header Include tag definition.
* 
You model #includes to files modeled in Modeler through Dependencies.
9. If you want to specify implementation file #includes to files not modeled in Modeler, specify the #includes text as the tagged value of the C++ Implementation Include tag definition.
10. If the Class is scoped to a Class and you want to specify that the Class is a non-member, that is, the Class is not a member of the owning Class but you want it to appear in the owning Class' Header file, set the tagged value of the C++ Non Member tag definition to TRUE.
11. If you want the Class to be generated inline when used as a type, set the tagged value of the C++ Anonymous Item tag definition to TRUE.
12. If you want to specify an inheritance list for the Class, specify the text as the tagged value of the C++ Inheritance List tag definition.
13. If you want calls to the Class to be asynchronous but do not want to introduce additional threads, apply the «C++ Deferred» stereotype to the Class. Tell me more...
14. If you want to specify friend classes and structs that are modeled in the Model, reference those Classes, Data Types and Interfaces through the C++ Friend tag definition. If you want to specify friend classes and structs that are not modeled in the Model, specify the text of the friend declarations as the tagged value of the C++ Friend Text tag definition.
15. If you want to specify forward declarations to classes, structs, unions or enums, reference those Classes, Data Types, Interfaces or Type Definitions through the C++ Forward Declarations tag definition. If you want to specify forward declarations to items not modeled in the Model, specify the text of the forward declarations as the tagged value of the C++ Forward Declaration Text.
16. If you want to specify the linkage, set the tagged value of the C++ Linkage tag definition as required, for example, extern "C".
17. If you want to specify using declarations and directives for the Class, specify the text as the tagged values of the C++ Using Decls and C++ Using Directives tag definitions. Note that if the C++ Using Decls and C++ Using Directives tag definitions are both blank, ACS will generate a 'using namespace std' statement when necessary.
18. If the Class owns a State Diagram through a State Machine and you do not want to generate state machine code to implement that State Diagram, set the tagged value of the C++ Generate State Machine tag definition to FALSE.