是否可以将以下内容传递给该函数:
void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, int (*verify_callback)(int, X509_STORE_CTX *));带有&还是这个参数的lambda函数?还是必须使用全局变量?
我试过了
auto lambda = [this](int preverify_ok, X509_STORE_CTX* x509_ctx) {
return 0;
};但正如您所知,它可能无法工作,因为没有用户定义的转换操作符可以执行此转换,或者运算符不能称为。没有这个参数,它工作得很好。
我想避免使用全局变量。我现在使用的是C++17。我知道在旧的C++中不可能传递类函数,但也许时间已经改变了?
发布于 2020-03-27 16:30:21
不,您只能将不捕获的lambda函数转换为函数指针。
相反,使用SSL_CTX_set_ex_data and SSL_CTX_get_ex_data将this指针存储在SSL_CTX对象中。您可以在程序开始时调用一次idx参数来获得SSL_CTX_get_ex_new_index参数。
https://stackoverflow.com/questions/60887038
复制相似问题