使用g ++版本4.8.4我收到错误:
错误:从'const SSL_METHOD *()(){aka const ssl_method_st ()()}'无效转换为'MethodFuncPtr {aka ssl_method_st (*)( )''[-fpermissive]
我可以用-fpermissive编译,但是什么是修复?我已经看到了这种类型错误的解决方案,但是当返回类型为const时没有(即使它明确地是一个const返回值)。
来自ssl.h的一个片段(C标题):
hi0
hi1
C ++标题:
#ifdef __cplusplus
extern "C" {
#endif
typedef struct ssl_method_st {
int version;
int (*ssl_new) (int *s);
void (*ssl_clear) (int *s);
} SSL_METHOD;
const SSL_METHOD *TLSv1_method(void);
#ifdef __cplusplus
}
#endif
C ++来源:
#include <ssl.h>
extern "C" {
typedef SSL_METHOD*(*MethodFuncPtr)(void);
}
class Method
{
public:
Method(SSL_METHOD *method);
static const MethodFuncPtr TLSv1;
private:
SSL_METHOD *m_method;
};
答案 0 :(得分:0)
我为const SSL_METHOD *返回类型添加了一个typedef。编译器很高兴。
C ++标题:
Method::Method(SSL_METHOD* method)
: m_method(method)
{ }
ConstMethodFuncPtr Method::TLSv1 = TLSv1_method;
C ++来源:
WORD testStart,testEnd;
testStart = 0x000;
testEnd = 0xFFF;
while(testStart != testEnd) testStart++;