On rappelle qu'une resource agrégée homogène, est une entité sans composants, mais avec des éléments, tous instances d'une même classe à des degrés de profondeur qui peuvent être variés.
Soit par exemple les classes de ressources MySR1 et MySR2 héritant de la sous-classe MySR de SingleResource. Et soit MyHAR une sous-classe de HomogeneousAggregatedResource. On peut alors écrire de la manière suivante le constructeur de MyHAR :
class MyHAR : public HomogeneousAggregatedResource { public: MyHAR(); }; MyHAR::MyHAR() { SetMetaClass(MY_H_A_R); // SetParentclassId(HOMOGENEOUS_AGGREGATED_RESOURCE); // pour mémoire AddInstanceToClass(); ElementClassId(MY_S_R); // la contrainte sur la classe des éléments }Puisque les éléments doivent être des instances de MySR, on peut construire une instance de MyHAR de la manière suivante, avec deux éléments qui ont bien la classe MySR comme ancêtre commun :
{ //... MyHAR* pHAR = new MyHAR(); MySR* pSR_a = new MySR(); pHAR->AddElement(pSR_a); MySR1* pSR1_a = new MySR1(); pHAR->AddElement(pSR1_a); }Dans cet exemple, la ressource agrégée n'a pas encore d'éléments de la classe MySR2.
Descripteurs :
type classe v. par défaut C int IsSingle hérité 0