bonjour dans une methode de ma classe j'ai un vector
et je voudrais le retournerCode:std::vector<CString>tabCode ;
comment je dois declarer ma classe ?Code:return tabCode ;
dans le cpp
???? Ccode::methode1();
et dans le .h
???? methode1();
Version imprimable
bonjour dans une methode de ma classe j'ai un vector
et je voudrais le retournerCode:std::vector<CString>tabCode ;
comment je dois declarer ma classe ?Code:return tabCode ;
dans le cpp
???? Ccode::methode1();
et dans le .h
???? methode1();
De la même façon que si tu devais retourner un int, par exemple, à part que tu retournes un std::vector<CString>.
Merci Bisous Xxx
Salut,
Si le vecteur que tu renvoie est réellement celui que contient ta classe, tu as vraissemblablement intérêt à le renvoyer sous forme de référence:
éventuellement en const (const std::vector<type>& maclasse::methode()const)Code:
1
2
3
4 std::vector<type>& maclasse::methode()//ici, tu peux renvoyer la référence { return monvecteur; }
Si le vecteur que tu veut renvoyer est rempli par la fonction, mais ne fait pas réellement partie de la classe, tu ne pourras par contre pas le renvoyer sous forme de référence, parce que sinon, tu renverra une référence sur une variable qui sera détruite en sortie de fonction
Code:
1
2
3
4
5
6
7
8
9
10 std::vector<type> maclasse::methode()//ici, tu ne peux pas renvoyer la référence { std::vector<type> ret; ret.push_back(membre1); ret.push_back(membre2); ret.push_back(membre3); ret.push_back(membre4); return ret; }
Un bon compilateur ne fait pas de copie.Citation:
Envoyé par nikko34
Une discussion sur le retour des variable locales a eu lieu il y a qqs mois.
Si je me souviens bien, Visual 6/7/8 ainsi que GCC sont mauvais... alors que le compilateur Intel (ICL/ICC) est bon...
Le standard C++ voudrait que les variables temporaires soient retournées sans copie:
Le standard ne dit rien sur le retour de variables locales. A ma connaissance GCC et Visual font bêtement la copie , alors que ICC/ICL sait retourner de grosses variables locales sans copie:Code:
1
2
3
4 vector<int> f() { return vector<int>(10); // variable temporaire }
Code:
1
2
3
4
5
6 vector<int> f() { vector<int> X(10); // variable locale ... return X; }
ouais ok j'ai compris, j'ai cru qu'il avait son vector comme attribut.