Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1286 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  error: no match for call to

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

error: no match for call to

n°2067937
razuki
Posté le 04-04-2011 à 17:57:24  profilanswer
 

Bonjour,
j'aimerais savoir comment je peux initialiser une structure ( en dehors de la déclaration ) :
En effet, je déclare d'abord la structure en faisant :

Code :
  1. certificate<string> gMyCert;


 
Cet objet certificat est accessible depuis n'importe quelle fonction de mon_fic.cpp
puis j'aimerais l'initialiser dans une fonction qui se trouve toujours dans mon_fic.cpp :

Code :
  1. init( ... ){
  2. ...
  3. X509 *mycert;
  4. ...
  5. PEM_read_X509(fp, &mycert, 0, NULL);
  6. gMyCert(mycert);
  7. ...
  8. }


 
Quand je compile ca me donne l'erreur suivante :

Code :
  1. error: no match for call to ‘(isl::certificate<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > ) (X509*& )’


 
Je ne comprend pas ce qui se passe. Il me dit no match for call alors que j'ai bien un constructeur certificate(X509* cert). Voici la définition de ma structure certificate :

Code :
  1. template<class StrType> struct certificate : shared {
  2.  
  3.    StrType  uri;
  4.    StrType  sn;
  5.    StrType  data;
  6.  
  7.   bool invalid() const { return (uri.empty() || sn.empty() || data.empty()); }
  8.   bool valid() const { return !invalid(); }
  9.   certificate() {}
  10.      
  11.  
  12.    certificate(X509* cert){
  13.      // retrieve data
  14.      unsigned char *u_out;
  15.      u_out = NULL;
  16.      size_t certlen;
  17.      certlen = i2d_X509(cert, &u_out);
  18.      char *out = reinterpret_cast<char *>(u_out);
  19.      data = out;
  20.      // retrieve uri <=> common name
  21.      X509 *mycert = cert;
  22.      char commonName[512];
  23.      X509_NAME * name = X509_get_subject_name(mycert);
  24.      X509_NAME_get_text_by_NID(name, NID_commonName, commonName, 512);
  25.      uri = commonName;
  26.      // retrieve sn
  27.      char serialNumber[512];
  28.      X509_NAME_get_text_by_NID(name, NID_serialNumber, serialNumber, 512);
  29.      sn = serialNumber;
  30.    }
  31.    certificate(const certificate& other) : uri(other.uri), sn(other.sn), data(other.data) { }
  32.  
  33. };


 
Ce qui m'étonne c'est que ca compile quand je déclare la structure dans la fonction init( ) ... c'est à dire

Code :
  1. init( ){
  2. X509 *mycert;
  3. ...
  4. PEM_read_X509(fp, &mycert, 0, NULL)
  5. ...
  6. certificate<string> gMyCert(mycert);
  7. }


 
Merci d'avance pour votre aide.

mood
Publicité
Posté le 04-04-2011 à 17:57:24  profilanswer
 

n°2068040
GrosBocdel
Posté le 05-04-2011 à 10:59:53  profilanswer
 


il est fort possible que je me gourre, mais pour moi dans le 2eme cas tu appelles le constructeur, et dans le premier tu appelles operator()


Message édité par GrosBocdel le 05-04-2011 à 11:00:07
n°2068138
razuki
Posté le 05-04-2011 à 13:44:32  profilanswer
 

en fait on m'a dit que dans le premier cas j'appelle le constructeur par défaut  :gMyCertcertificate<string> gMyCert; équivaut à gMyCertcertificate<string> gMyCert( )


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  error: no match for call to

 

Sujets relatifs
se debarasser des error: crosses initializationCall to undefined function GetSQLValueString() in ... line 10
[C++] erreur : no matching function for callProblème C++ : Syntax error : missing ';'
Error Code Blockserror sur union REGS
Preg_Match pour lien megaupload premium[RESOLU] vtable error
Fatal error: Cannot instantiate non-existent class: sqlitedatabaseQCm ( genre call center ) pour Wordpress
Plus de sujets relatifs à : error: no match for call to


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR