Peut-on utiliser des vecteurs contenant des objets dont certaines
parties sont allouées Dynamiquement, cad dont on ne peut connaître à
l'avance la place occupée en mémoire ?
J'ai un cas qui passe en utilisant un vecteur d'objets dynamiques
(peut-être avec de la chance, qui sait), et un cas qui ne passe pas.
Voici celui qui ne passe pas, où je fais un vecteur d'objets Rubrique
(j'épure pour alléger) :
***
typedef vector<Rubrique> vecteurrubriques; // définition d'un type
de vecteurs pour les rubriques
class ListeRubrique {
protected : // seules les classes dérivées
pourront utiliser ces champs
...
vecteurrubriques rubrique; // Liste des rubriques, un
tableau d'objets "Rubrique"
...
public :
...
};
***
pour info, ma classe Rubrique :
typedef vector<Dynachar> vecteurdynachar; // définition d'un type
de vecteur de Dynachar
class Rubrique {
protected : //seules les classes dérivées
pourront utiliser ces champs
...
vecteurdynachar lignerubrique; // Contenu des lignes, un tableau de
Dynachar
...
public :
Rubrique(); // constructeur vide
Rubrique(Dynachar); // constructeur à partir d'un
Dynachar qui n'englobe que la rubrique
~Rubrique(){}; // destructeur vide (le vecteur
sera chargé de désallouer les lignes)
...
};
***
Et pour info, ma classe Dynachar est une classe de chaîne dynamique, un
peu comme String, une liste simplement chaînée, qui marche très bien par
ailleurs, y compris quand je fais un vecteur de Dynachar.
Dans mon constructeur de ListeRubriques, je fais un :
rubrique.resize(nbrubriques)
et j'obtiens un core dumped précisément à cette opération. Est-ce parce
que j'emboîte 2 vecteurs quand je fais un vecteur de Rubrique qui, dans
Rubrique, contient un vecteur de Dynachar ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Falk Tannhäuser
Jérôme wrote:
Et pour info, ma classe Dynachar est une classe de chaîne dynamique, un peu comme String, une liste simplement chaînée, qui marche très bien par ailleurs, y compris quand je fais un vecteur de Dynachar.
Dans mon constructeur de ListeRubriques, je fais un :
rubrique.resize(nbrubriques)
et j'obtiens un core dumped précisément à cette opération. Est-ce parce que j'emboîte 2 vecteurs quand je fais un vecteur de Rubrique qui, dans Rubrique, contient un vecteur de Dynachar ?
La classe Dynachar possède-t-elle un constructeur de copie et un opérateur d'affectation qui marchent correctement ?
Jérôme wrote:
Et pour info, ma classe Dynachar est une classe de chaîne dynamique, un
peu comme String, une liste simplement chaînée, qui marche très bien par
ailleurs, y compris quand je fais un vecteur de Dynachar.
Dans mon constructeur de ListeRubriques, je fais un :
rubrique.resize(nbrubriques)
et j'obtiens un core dumped précisément à cette opération. Est-ce parce
que j'emboîte 2 vecteurs quand je fais un vecteur de Rubrique qui, dans
Rubrique, contient un vecteur de Dynachar ?
La classe Dynachar possède-t-elle un constructeur de copie et un
opérateur d'affectation qui marchent correctement ?
Et pour info, ma classe Dynachar est une classe de chaîne dynamique, un peu comme String, une liste simplement chaînée, qui marche très bien par ailleurs, y compris quand je fais un vecteur de Dynachar.
Dans mon constructeur de ListeRubriques, je fais un :
rubrique.resize(nbrubriques)
et j'obtiens un core dumped précisément à cette opération. Est-ce parce que j'emboîte 2 vecteurs quand je fais un vecteur de Rubrique qui, dans Rubrique, contient un vecteur de Dynachar ?
La classe Dynachar possède-t-elle un constructeur de copie et un opérateur d'affectation qui marchent correctement ?
Jérôme
Et pour info, ma classe Dynachar est une classe de chaîne dynamique, un peu comme String, une liste simplement chaînée, qui marche très bien par ailleurs, y compris quand je fais un vecteur de Dynachar.
Dans mon constructeur de ListeRubriques, je fais un :
rubrique.resize(nbrubriques)
et j'obtiens un core dumped précisément à cette opération. Est-ce parce que j'emboîte 2 vecteurs quand je fais un vecteur de Rubrique qui, dans Rubrique, contient un vecteur de Dynachar ?
La classe Dynachar possède-t-elle un constructeur de copie et un opérateur d'affectation qui marchent correctement ?
Oui, et notamment un constructeur par recopie, elle a même un opérateur = surchargé, enfin tout ce qui va bien, elle marche depuis des années, et elle est aussi sûre que la classe String. J'avais justement bien fait attention aux constructeurs et aux destructeurs.
Et pour info, ma classe Dynachar est une classe de chaîne dynamique,
un peu comme String, une liste simplement chaînée, qui marche très
bien par ailleurs, y compris quand je fais un vecteur de Dynachar.
Dans mon constructeur de ListeRubriques, je fais un :
rubrique.resize(nbrubriques)
et j'obtiens un core dumped précisément à cette opération. Est-ce
parce que j'emboîte 2 vecteurs quand je fais un vecteur de Rubrique
qui, dans Rubrique, contient un vecteur de Dynachar ?
La classe Dynachar possède-t-elle un constructeur de copie et un
opérateur d'affectation qui marchent correctement ?
Oui, et notamment un constructeur par recopie, elle a même un opérateur
= surchargé, enfin tout ce qui va bien, elle marche depuis des années,
et elle est aussi sûre que la classe String. J'avais justement bien fait
attention aux constructeurs et aux destructeurs.
Et pour info, ma classe Dynachar est une classe de chaîne dynamique, un peu comme String, une liste simplement chaînée, qui marche très bien par ailleurs, y compris quand je fais un vecteur de Dynachar.
Dans mon constructeur de ListeRubriques, je fais un :
rubrique.resize(nbrubriques)
et j'obtiens un core dumped précisément à cette opération. Est-ce parce que j'emboîte 2 vecteurs quand je fais un vecteur de Rubrique qui, dans Rubrique, contient un vecteur de Dynachar ?
La classe Dynachar possède-t-elle un constructeur de copie et un opérateur d'affectation qui marchent correctement ?
Oui, et notamment un constructeur par recopie, elle a même un opérateur = surchargé, enfin tout ce qui va bien, elle marche depuis des années, et elle est aussi sûre que la classe String. J'avais justement bien fait attention aux constructeurs et aux destructeurs.