impossible de convertir de 'const char *' to 'char *' std::string::c_str

Cela donne l'erreur: impossible de convertir de 'const char *' to 'char *'.

class Mock
{
public:
    ...
    static void func(char **result)
    {
          *result = (resultsI++)->c_str();
    }
static std::vector<std::string> results;
static std::vector<std::string>::iterator resultsI;
};

std::vector<std::string> Mock::results;
std::vector<std::string>::iterator Mock::resultsI;

Comment puis-je valablement se débarrasser de cette erreur, sans changer l'interface de la fonction func? Le responsable de l'implémentation de cette interface:

void (func*)(char **result) 

oublié d'utiliser const char** dans la signature. Je ne peux pas le changer.

Rappelez-vous ceci est un simulacre et je suis seulement utilisé pour mes tests unitaires.

J'imagine que vous aurez à copier au lieu d'utiliser c_str().
Vous peut (mais ne doit pas) dédaigné la constness (const_cast<char*>((resultsI++)->c_str());)
Ryan Guthrie: Pourquoi ne devrais-je pas le faire?
const est là pour votre propre protection. En jetant de loin, vous perdez cette protection.

OriginalL'auteur Baz | 2012-11-16