1
使用G ++版本4.8.4,我得到一個錯誤無效的轉換,從「常量SSL_METHOD *()無效的轉換(){又名常量ssl_method_st()() }'to'MethodFuncPtr {aka ssl_method_st(*)()}'[-fpermissive]錯誤:</p> <p>錯誤:在const的返回類型
我可以使用-fpermissive進行編譯,但是什麼是修復?我已經看到了這種類型的錯誤的解決方案,但是當返回類型是const時(儘管它顯式地是一個常量返回值)沒有。
從ssl.h一個片段(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;
};
C++源:
Method::Method(SSL_METHOD* method)
: m_method(method)
{ }
const MethodFuncPtr Method::TLSv1 = TLSv1_method;
不應此'方法(SSL_METHOD *方法);'是'方法(SSL_METHOD方法);'?看起來你有一個函數指針的指針,我懷疑你不想要。 –
您有一個返回'const SSL_METHOD *'的函數,以及一個期望函數返回非const'SSL_METHOD *'的變量。兩者不兼容。修復其中一個以匹配另一個。 –
不是真正的C問題。 – chqrlie