diff options
Diffstat (limited to 'src/main/CompositeElement.h')
-rw-r--r-- | src/main/CompositeElement.h | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/src/main/CompositeElement.h b/src/main/CompositeElement.h index b032e62..76ca395 100644 --- a/src/main/CompositeElement.h +++ b/src/main/CompositeElement.h @@ -13,38 +13,30 @@ namespace vhc { +/** Classe abstraite representant un element compose de differents elements. + * Cette classe est immuable publiquement, c'est a dire que les elements constituants de cet element compose + * ne peuvent pas etres reassignes, ajoutes ou supprimes depuis l'exterieur. + * Le but de cette contrainte est de faciliter la gestion de pointeurs, necessaires au polymorphisme. */ class CompositeElement: public Element { + /** Elements composants de cet element compose. */ std::vector < Element* > elements; public: - CompositeElement( - const Vector3D& entry, - const Vector3D& exit, - double sectionRadius, - const std::vector<Element*> & elements0, - Element* next = NULL): - + CompositeElement(const Vector3D& entry, const Vector3D& exit, double sectionRadius, Element* next = NULL): Element(entry, exit, sectionRadius, next), - elements(0) { - - for (int i(0); i < elements0.size(); ++i) { - elements.push_back(elements0[i]->copy()); - }; - } + elements(0) {}; - virtual ~CompositeElement() { - for (int i(0); i < elements.size(); ++i) { - delete elements[i]; - elements[i] = NULL; - }; - } + virtual ~CompositeElement(); - //TODO copy may not be alright (shallow)? - virtual CompositeElement* copy() const {return new CompositeElement(*this);} + /*for (int i(0); i < elements.size(); ++i) { + delete elements[i]; + elements[i] = NULL; + };*/ + /** Determine si une particule a heurte le bord de cet element, donc d'un des elements composants. */ virtual bool isOutside(const Particle& particle) const { for (int i(0); i < elements.size(); ++i) { if (elements[i]->isOutside(particle)) return true; @@ -52,6 +44,7 @@ public: return false; } + /** Determine si une particule a passe cet element, donc passe le dernier element composant. */ virtual bool isPast(const Particle& particle) const { if (elements[elements.size() - 1]->isPast(particle)) return true; else return false; |