2013-06-13 3 views
1

Je me demandais si vous pouviez me aider avec un petit problème que j'ai:C++ créer octet vide

Je devloping actuellement en C++/Qt et a obtenu le message d'erreur suivant:

P:\Produkt\Savor_V100\webapi.cpp:84: error: C2664: 'CryptoPP::PasswordBasedKeyDerivationFunction::DeriveKey' : cannot convert parameter 1 from 'const char *' to 'byte *' 
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 

Le paramètre dans la fonction n'est pas utilisé, donc je voudrais passer un octet vide là-bas. Après un peu de recherche j'ai découvert qu'un octet est juste un simple char non signé?

Mon code ressemble à ceci:

byte* unused; 
qDebug() << CryptoPP::PasswordBasedKeyDerivationFunction::DeriveKey(CryptoPP::SHA1::StaticAlgorithmName(), CryptoPP::SHA1::BLOCKSIZE, unused, user->getPassword(), sizeof(user->getPassword()), user->getSerial(), sizeof(user->getSerial()), 0); 
+1

vous pouvez passer '0', ou' nullptr' puisque le type d'argument est 'byte *'. Ou essayez 'reinterpret_cast (CryptoPP :: SHA1 :: StaticAlgorithmName())' – perreal

+0

Quelle est votre question? – Aravind

Répondre

2

Comme dit dans le commentaire, la question est ici avec le premier argument de la fonction, non pas avec le troisième où vous avez utilisé unused. Puisque je suppose que vous avez besoin de ce paramètre, vous devriez essayer comme suggéré:

qDebug() << CryptoPP::PasswordBasedKeyDerivationFunction::DeriveKey(
       reinterpret_cast<byte*>(CryptoPP::SHA1::StaticAlgorithmName()), 
       CryptoPP::SHA1::BLOCKSIZE, 
       0, 
       user->getPassword(), 
       sizeof(user->getPassword()), 
       user->getSerial(), 
       sizeof(user->getSerial()), 
       0);