Même si la classe est templatisée ?
Désolé si j'ai un peu trop simplifié... :/
Le problème c'est que j'utilise des std::vector<T*>
aggrégés dans un DataVector (pour gérer certains aspects
de persistance des données).
Et pour ces mêmes aspects de persistance de données, il est d'usage
de définir pour chaque classe Bidule, une classe BiduleContainer
qui hérite de DataVector.
Les éléments de DataVector sont alloués dynamiquement, et c'est donc DataVector qui en a la propriété.
Bon je vais pas me répandre dans les détails techniques (que je ne maitrise pas suffisamment d'ailleurs), mais voilà en gros comment ca se goupille :
public:
DataVector(OwnershipPolicy ownPolicy = OWN_ELEMENTS);
DataVector( InputIerator first, InputIterator last, OwnershipPolicy = VIEW_ELEMENTS );
DataVector( ... );
/* ...*/
}
et donc ensuite on peut definir des classes,
class BiduleContainer : public DataVector { ... }
et c'est donc à ce moment là que je voudrais pouvoir réutiliser les constructeurs par paramètres du template DataVector (principalement le constructeur qui permet de ne pas effacer les objets contenus car ils sont contenus par un autre conteneur qui lui a les droits de propriété.
Est-ce que c'est plus clair ?
Parce que bien entendu, même si je ne suis pas un programmeur C++ de haut niveau (cf [1]) j'ai quand même quelques bases :P
Mon erreur (ou en tout cas une) c'est que je surchargeais l'operateur de construction par défaut ( ie: (void) sans définir d'Ownership par défaut) de ma class BiduleContainer.
Mais le fait que je ne pas construire de BiduleContainer en utilisant la copie par itérateurs.
[^] # Re: Ben oui, c'est le principe de la prog objet quand même ...
Posté par Sebastien . En réponse au message Héritage et constructeurs. Évalué à 1.
Désolé si j'ai un peu trop simplifié... :/
Le problème c'est que j'utilise des std::vector<T*>
aggrégés dans un DataVector (pour gérer certains aspects
de persistance des données).
Et pour ces mêmes aspects de persistance de données, il est d'usage
de définir pour chaque classe Bidule, une classe BiduleContainer
qui hérite de DataVector.
Les éléments de DataVector sont alloués dynamiquement, et c'est donc DataVector qui en a la propriété.
Bon je vais pas me répandre dans les détails techniques (que je ne maitrise pas suffisamment d'ailleurs), mais voilà en gros comment ca se goupille :
template<typename T>
class DataVector
{
private:
OwnershipPolicy m_ownPolicy;
typedef std::vector<T*> PtrVector;
PtrVector m_pCont;
public:
DataVector(OwnershipPolicy ownPolicy = OWN_ELEMENTS);
DataVector( InputIerator first, InputIterator last, OwnershipPolicy = VIEW_ELEMENTS );
DataVector( ... );
/* ...*/
}
et donc ensuite on peut definir des classes,
class BiduleContainer : public DataVector { ... }
et c'est donc à ce moment là que je voudrais pouvoir réutiliser les constructeurs par paramètres du template DataVector (principalement le constructeur qui permet de ne pas effacer les objets contenus car ils sont contenus par un autre conteneur qui lui a les droits de propriété.
Est-ce que c'est plus clair ?
Parce que bien entendu, même si je ne suis pas un programmeur C++ de haut niveau (cf [1]) j'ai quand même quelques bases :P
Mon erreur (ou en tout cas une) c'est que je surchargeais l'operateur de construction par défaut ( ie: (void) sans définir d'Ownership par défaut) de ma class BiduleContainer.
Mais le fait que je ne pas construire de BiduleContainer en utilisant la copie par itérateurs.
Voilà voilà...
[1] : https://linuxfr.org/~linuxfan/14787.html(...)