Est-il possible d'allouer dynamiquement une variable temporaire en C++?
Je veux faire quelque chose comme ça:Est-il possible d'allouer dynamiquement une variable temporaire en C++?
#include <iostream>
#include <string>
std::string* foo()
{
std::string ret("foo");
return new std::string(ret);
}
int main()
{
std::string *str = foo();
std::cout << *str << std::endl;
return 0;
}
Ce code fonctionne, mais le problème est que je dois créer une autre chaîne afin de le retourner comme un pointeur. Y at-il un moyen de mettre ma variable temporaire/locale dans mon tas sans recréer un autre objet?
Voici une illustration de la façon dont je le ferais:
std::string* foo()
{
std::string ret("foo");
return new ret; // This code doesn't work, it is just an illustration
}
Quel est le problème avec 'std :: string foo() {return" foo "; } '? La copie est presque garantie d'être élue. –
+1 à James, mais évitez «tout sauf», c'est déroutant pour nous, anglophones non-natifs. –
Mon code est beaucoup plus complexe que cela, la contrainte de pointeur n'est pas évitable. – klefevre