在C++中实现对象与主对象的转换
我想通过调用函数获取私钥的值。。因为我必须在主函数的其他地方使用它,但我无法使它工作。我尝试过在函数中使用和不使用指向rsaPrivate的指针在C++中实现对象与主对象的转换,c++,pointers,C++,Pointers,我想通过调用函数获取私钥的值。。因为我必须在主函数的其他地方使用它,但我无法使它工作。我尝试过在函数中使用和不使用指向rsaPrivate的指针 int main(int argc, char* argv[]) { CryptoPP::RSA::PrivateKey rsaPrivate; getKeysFromPfx(&rsaPrivate); } void getKeysFromPfx(CryptoPP::RSA::PrivateKey *rsaPrivate)
int main(int argc, char* argv[]) {
CryptoPP::RSA::PrivateKey rsaPrivate;
getKeysFromPfx(&rsaPrivate);
}
void getKeysFromPfx(CryptoPP::RSA::PrivateKey *rsaPrivate) {
try
{
rsaPrivate.BERDecodePrivateKey(queue, false /*paramsPresent*/, queue.MaxRetrievable());
// BERDecodePrivateKey is a void function. Here's the only check
// we have regarding the DER bytes consumed.
assert(queue.IsEmpty());
bool valid = *rsaPrivate.Validate(prng, 3);
if (!valid)
std::cerr << "RSA private key is not valid" << std::endl;
catch (const Exception& ex)
{
std::cerr << ex.what() << std::endl;
exit(1);
}
}
错误出现在函数中,它表示为rsaPrivate
表达式必须具有类类型
根据对这个问题的评论,这里是解决方案
从RSA中删除*并更改。向rsaPrivate调用函数时->。是否尝试将函数放在主函数之前?您发布的内容中至少缺少一个include。您应该通过引用而不是指针传递rsaPrivate对象,因为这让我怀疑:CryptoPP::RSA::PrivateKey*rsaPrivate但rsaPrivate.BERDecodePrivateKey。。。。我相信。必须改为->私人->什么