j ai un petit probleme idiot en voulant utiliser un vector
j ai construit une classe du style :
class Ligne
{
string var1;
string var2;
const int OK;
public:
Ligne():OK(0) { ... };
etc etc
}
et j'ai voulu faire un vecteur de ligne :
vector<Ligne> fichier;
mais cela coince lorsque je veux faire :
Ligne ligne(.....);
fichier.push_back(ligne); // ( ou fichier.insert( ... ); )
il semble qu'il ne sache pas faire la copie (et un constructeur de copie
ne change pas le probleme) :
- in member fonction 'ligne& ligne::operator=(const Ligne &)'
- non static const member
ou est mon erreure de debutant ???
dois je construire mon propre operator = ?
|> wrote in message |> news:... |> > Loïc Joly wrote in message |> > news:<bp0vhh$urs$... |> > > L'opérateur = et le constructeur de copie sont |> > > sémentiquement proche, mais dans le langage, ce sont des |> > > entités bien distinctes.
|> > > Et ici, tu as besoin du premier.
|> > S'il utilise std::vector, il en a besoin des deux.
|> Ok, la norme stipule que les éléments d'un container doivent |> être "Assignable", mais j'ai du mal à imaginer qu'une |> implémentation de push_back() fasse appel à l'opérateur |> d'affectation (le posteur initial parlait de problème de |> compilation lors de l'instantiation de push_back()).
Dans les implémentations que j'ai vu, push_back se ressemble :
La fonction insert, elle, a bien besoin de l'affectation. Même si elle ne servira pas effectivement lors qu'on insère à la fin (comme c'est le cas avec push_back), les templates sont instantiés, et l'opérateur doit y être.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
|> kanze@gabi-soft.fr wrote in message
|> news:<d6652001.0311140138.6b42f630@posting.google.com>...
|> > Loïc Joly <loic.actarus.joly@wanadoo.fr> wrote in message
|> > news:<bp0vhh$urs$1@news-reader2.wanadoo.fr>...
|> > > L'opérateur = et le constructeur de copie sont
|> > > sémentiquement proche, mais dans le langage, ce sont des
|> > > entités bien distinctes.
|> > > Et ici, tu as besoin du premier.
|> > S'il utilise std::vector, il en a besoin des deux.
|> Ok, la norme stipule que les éléments d'un container doivent
|> être "Assignable", mais j'ai du mal à imaginer qu'une
|> implémentation de push_back() fasse appel à l'opérateur
|> d'affectation (le posteur initial parlait de problème de
|> compilation lors de l'instantiation de push_back()).
Dans les implémentations que j'ai vu, push_back se ressemble :
La fonction insert, elle, a bien besoin de l'affectation. Même si
elle ne servira pas effectivement lors qu'on insère à la fin
(comme c'est le cas avec push_back), les templates sont instantiés,
et l'opérateur doit y être.
--
James Kanze mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
|> wrote in message |> news:... |> > Loïc Joly wrote in message |> > news:<bp0vhh$urs$... |> > > L'opérateur = et le constructeur de copie sont |> > > sémentiquement proche, mais dans le langage, ce sont des |> > > entités bien distinctes.
|> > > Et ici, tu as besoin du premier.
|> > S'il utilise std::vector, il en a besoin des deux.
|> Ok, la norme stipule que les éléments d'un container doivent |> être "Assignable", mais j'ai du mal à imaginer qu'une |> implémentation de push_back() fasse appel à l'opérateur |> d'affectation (le posteur initial parlait de problème de |> compilation lors de l'instantiation de push_back()).
Dans les implémentations que j'ai vu, push_back se ressemble :
La fonction insert, elle, a bien besoin de l'affectation. Même si elle ne servira pas effectivement lors qu'on insère à la fin (comme c'est le cas avec push_back), les templates sont instantiés, et l'opérateur doit y être.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
James Kanze
ricky writes:
|> > S'il utilise std::vector, il en a besoin des deux.
|> oki je vais les faire :-)
|> finalement, il ne faut pas etre paresseux en cpp :-) |> k'ai voulu m'eviter ces constructions .. pour rien en fait
Mais si tu supprimes le const sur le membre, le compilateur les fournira pour toi ; tu n'as rien à faire.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
ricky <eric_nyme@yahoo.fr> writes:
|> > S'il utilise std::vector, il en a besoin des deux.
|> oki je vais les faire :-)
|> finalement, il ne faut pas etre paresseux en cpp :-)
|> k'ai voulu m'eviter ces constructions .. pour rien en fait
Mais si tu supprimes le const sur le membre, le compilateur les fournira
pour toi ; tu n'as rien à faire.
--
James Kanze mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
|> > S'il utilise std::vector, il en a besoin des deux.
|> oki je vais les faire :-)
|> finalement, il ne faut pas etre paresseux en cpp :-) |> k'ai voulu m'eviter ces constructions .. pour rien en fait
Mais si tu supprimes le const sur le membre, le compilateur les fournira pour toi ; tu n'as rien à faire.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93