2015-04-21 1 views
0

J'ai un type générique de String qui a la valeur de mon certificat cert.pem Je passe à une fonction de coulée à const char* mais il ne fonctionne pas. Mon code est ci-dessous qui ne fonctionne pasconst char * différence dans la coutume classe String

String sCertificate = "cert.pem"; 
if (SSL_CTX_use_certificate_file(ctx,(const char*)&sCertificate, SSL_FILETYPE_PEM) <= 0) 
     { 
       mPtrLogger->logMsg(CF, "", "Unable to Load Certificate file", INFO); 
       abort(); 
     } 

et ce code fonctionne

if (SSL_CTX_use_certificate_file(ctx,"cert.pem", SSL_FILETYPE_PEM) <= 0) 
     { 
       mPtrLogger->logMsg(CF, "", "Unable to Load Certificate file", INFO); 
       abort(); 
     } 

Je ne peux pas semblent comprendre quel est le problème.

+3

Où est la déclaration de ce type? Vous n'utilisez pas la 'chaîne' que la bibliothèque standard nous fournit. – ForceBru

+0

Non J'ai remplacé une chaîne et créé un type générique. –

+2

puis affichez la classe que vous avez créée pour 'String'! – ForceBru

Répondre

2

À moins que le type String possède un opérateur de conversion surchargé, vous ne pouvez pas convertir par diffusion. (Pensez à cela comme si vous castiez l'une de vos classes complexes en char *.)

Passez en revue les méthodes de String et choisissez-en une qui renvoie char *. Le std::string a les méthodes c_str et data.

+0

Non, il n'a pas de surcharge pour const char * et je ne peux pas l'écrire aussi :(Des suggestions? –

+0

Does 'String' avoir une méthode qui retourne 'const char *' ou 'char *'? Si non, pourquoi l'utilisez-vous au lieu de 'std :: string'? –

+0

Parce qu'il est utilisé dans toute mon application –