Modélisation pour C++

Cette section explique comment modéliser les objets C++ dans le modèle orienté objet de PowerAMC.

Déclaration d'espace de noms pour les classificateurs

L'attribut étendu UseNamespace permet de générer un classificateur au sein d'une déclaration d'espace de noms. Vous devez définir la valeur True pour cet l'attribut étendu.

Gestion des associations bidirectionnelles dans C++

Le problèmes des associations bidirectionnelles est traité par l'utilisation de déclarations anticipées aux lieux de includes.

Considérons une association bidirectionnelle entre ClassA et ClassB.



Le code généré dans A.h serait le suivant :

#if !defined(__A_h)
#define __A_h

class B;  // forward declaration of class B

class A
{
public:
  B* b;

protected:
private:

};

#endif

Le code généré dans B.h serait le suivant :

#if !defined(__B_h)
#define __B_h

class A;  // forward declaration of class A

class B
{
public:
  A* a;

protected:
private:

};

#endif

Cette approche ne fonctionne pas si l'une des classes est une classe interne car il n'est pas possible d'utiliser une déclaration anticipée des classes internes dans C++.



Si cette situation se produit, un message d'avertissement s'affiche lors de la génération, et le code correspondant est mis en commentaire.

Fonctionnalités ANSI C++ non prises en charge

PowerAMC ne prend pas en charge les fonctionnalités C++ suivantes :

  • Templates

  • Enums

  • Typedefs

  • Inline methods